Cakephp PHP WEB開発

【Cakephp2→4】定数IMAGESはimageBaseUrlへ置き換え

※本サイトはPR表記を含みます。

webroot ディレクトリ以下の画像関係のパス定数にCake2では「IMAGES」 が定義されているのですが、v2.4からは非推奨になっています。

IMAGESはCake2側からCake4メソッドがコールされている場合は基盤がCake2なので、定数は認識できます。

// Cake2側からCake4メソッドをコールしてもIMAGESは認識できる
if (!move_uploaded_file($from, IMAGES)) {
    return false;
}

よって、モデルメソッドがCake4側であっても IMAGES は読み込みできていたのですが、コントローラー移行フェーズになると、すべてCake4で稼働します。そうなると、IMAGES は認識できません。なので、代替として App.imageBaseUrl を利用します。

例: Cake4稼働時点でIMAGESはundefined状態になるので代替するとOK

use Cake\Core\Configure;

// クラスメソッド内
if (!move_uploaded_file($from, Configure::read('App.imageBaseUrl'))) {
    return false;
}

ベストなのは、Cake2モデル移行時に IMAGES が出現した時点で App.imageBaseUrl として変更してしまうのがよいと思います。

モデル移行時はフツーにパス認識しているので、コードレビュー時に見落としやすいです。気をつけましょう。

追記: 2023/03/16

画像のファイルパスにフルパスが必要な場合、WWW_ROOT . Configure::read('App.imageBaseUrl') という形にするとよいでしょう。

 

-Cakephp, PHP, WEB開発
-