エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP4で定数の設定と呼び出し方法の解説(defineとConfigure)

      2023/12/28

CakePHP4で定数の設定と呼び出し(defineとConfigure)

 
CakePHP4でサイトの構築をする際に、プログラム全体で使用する定数を設定し、それを呼び出す方法について解説します。
 
CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説」では、CakePHP3の時の設定方法として記事を書いていますが、CakePHP4では少し変更されていますので、改めて記事を書きました。
 
 
小規模なサイトであれば、定数を「bootstrap.php」に書いていく方法があります。
ファイルを分ける必要もないため、シンプルな方法です。
その方法が「bootstrap.phpに定数を設定する方法」です。
 
ですが、サイトの規模が大きくなると定数も多くなっていき、「bootstrap.php」が肥大化しますので、定数を別のファイルに分けて設定する方法もあります。
その方法が「定数を別ファイルに設定する方法」です。
 
 
 

bootstrap.phpに定数を設定する方法

 
最初は「bootstrap.php」に定数を設定(定義)する方法を解説します。
 
 

「/app/Config/bootstrap.php」に定数を設定

 
「/app/Config/bootstrap.php」に定数を設定します。
記述する場所は「bootstrap.php」のどこでも問題ありませんが、分かりやすくファイルの一番最後に追記するといいでしょう。
 

 
定数の定義は、PHPの標準関数である「define()」をそのまま利用することができます。
PHP v7以降では、「define()」関数で配列も指定することができるようになりました。
 
また、CakePHP4の関数である「Configure」を利用することもできます。
引数の 1つ目が「定数名」になり、2つ目がその定数に入れる値になります。
 
2つ目の引数には、文字列のほか、配列、連想配列を指定することもできます。
 
 
また、「Configure」では、下記の様に複数をまとめて設定することもできます。

 
 

設定した変数、定数を読み込む方法

 
「define()」関数で指定した定数は、コントローラー内でもテンプレート内でも定数名を書くだけで定数として使用することができます。簡単です。
(「define()」で定義した定数は、シングルクォートなどで囲みません。)
 

 
 
対して、「Configure::write()」で指定した変数は、「Configure::read()」を使ってコントローラー内で呼び出します。
 

 
上記のサンプルは、「initialize()」内で呼び出していますので、記述しているコントローラー全体で使用することができます。
特定のアクション内に記述し、そのアクション内だけで使用する方法もあります。
 
11行目のように「set()」メソッドを使ことでテンプレートで利用することもできるようになります。
 
 
上記の例では、「$array2 = Configure::read("array2");」のように配列全体を取得していますが、下記のように値ごとに取得することも可能です。
 

 
連想配列から値を取得する方法ですので、下記のような記述も可能ではあります。

 
 
また、テンプレートファイルで直接呼び出しをする場合は、下記のように「use Cake\Core\Configure;」を記述することで可能になります。
 

 
 
 

定数を別ファイルに設定する方法

 
定数の定義を「bootstrap.php」ファイルではなく、別ファイルに記述する方法を解説します。
CakePHP3から CakePHP4になって記述方法が変更になっていますので注意してください。
 
 

「/app/Config/const.php」ファイルを作成し定数を設定

 
「/app/Config/」フォルダの中に「const.php」ファイルを新規作成します。
(ここでのファイル名は「const.php」にしていますが、ファイル名の決まりはありませんので好みのファイル名を付けてください。)
 
定数は以下のように指定します。
 

 
「define()」関数で指定する場合は、「bootstrap.php」に記述するときと違いはありません。
 
「Configure」で指定する場合は、「return」の引数として配列で指定します。
そのため、定数の指定行は配列の値となりますので、それぞれの行の終わりは「;」ではなく「,」で区切ります。
 
 

 
ちなみに、定数を「const.php」ファイルのように別ファイルで管理する場合、「return [];」は必須となります。
そのため、配列の中は空であっても記述しておく必要があります。
 
return [];」の記述がない場合は「Config file "const.php" did not return an array」というエラーが表示されます。
 
 
定数を「const.php」ファイルに記述する際の記述方法が CakePHP3のころと異なっています。
詳しくは「CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説」に記載している内容と比べてもらえるとわかりますが、CakePHP3のソースをコピペしてもエラーが発生しますので、ご注意ください。
 
また、CakePHP3のころには必要だった「use Cake\Core\Configure;」の記述は必要なくなっています。(記述していても問題はありませんが。)
 
 

「/app/Config/bootstrap.php」に定数ファイルを読み込む設定

 
続いて、設定した「const.php」ファイルを読み込む設定を「/app/Config/bootstrap.php」に記述します。
 
記述する場所は分かりやすく「bootstrap.php」ファイルの一番最後などに記述しても OKですが、「bootstrap.php」の 81行目辺りから始まる、他のファイルもロードしている処理に追記する方がより良いでしょう。(下記 5行目、6行目を追加しています。)
 

 
 
「/app/Config/bootstrap.php」には、デフォルトで「use Cake\Core\Configure;」は記載されていますので、追記する必要はありませんが、もし、ない場合は追記をします。
 
 

設定した定数を読み込む方法

 
設定した定数を読み込む方法は、先の「bootstrap.phpに定数を設定する方法」と同じですので、ほぼコピペになりますが以下のようになります。
 

 
 
より詳しく確認したい方は下記のオフィシャルサイトをご確認ください。
 
CakePHP4 オフィシャルサイト 環境設定
https://book.cakephp.org/4/ja/development/configuration.html#environment-variables
 
 

CakePHP4の関連記事

CakePHPのFlashエラーは出るが入力項目ごとのメッセージが出ないエラーの原因
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHPで同一テーブル内の値を比較する条件でレコードを取得する方法
国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のメッセージ日本語化の設定(国際化と地域化の機能の使い方の解説)
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4でcontrollerで実行したバリデーションエラーをmodelのにマージする方法
 
その他の「CakePHP4」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」

CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。

CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法
CakePHP3のタイムゾーンを協定世界時UTCから日本標準時間JSTにずれを変更する方法

CakePHP3の標準設定のタイムゾーンは「UTC(協定世界時)」に設定されている。これを日本標準時に変更する方法(app.php、bootstrap.phpの変更方法)の解説。

CakePHP 2.3 コマンドラインからPHPのシェル実行の方法解説

CakePHP 2.3でコマンドラインから CakePHPで記述した処理を実行する方法を解説します。

VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する。
VirtualBoxにCakePHP3を設置。必要なCentOS、Apache、PHP、MySQL、Composerをインストールし設定する

VirtualBoxにCentOS、Apache、MySQL、PHPをインストールするところから初めてCakePHP3の開発環境を構築する手順を詳細解説。この記事1つで全ての設定が完了する。

CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。

CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法
CakePHP3のビューで受取ったテーブルのオブジェクトを連想配列に変換する方法

コントローラーからビューに送ったテーブルのオブジェクトを連想配列に変換し、ビューの中で自由に使えるようにするメソッド「toArray()」の解説。連想配列に変換できれば利用度アップ!

CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2
CakePHP3のUpload Plugin 3.0をバリデーションなど実運用向けのカスタマイズ方法解説・その2

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその2でバリデーションなどの実用的なカスタマイズ方法を解説。

CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説
CakePHPのバリデーションを入力値・項目の条件によって変える方法を解説

入力された値によってバリデーション(入力チェック)の内容を切り替える。その処理をCakePHPで実装する方法を解説。条件ごとに unset関数を使ってバリデーションを削除する、という方法を採る。

CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する

CakePHP3のkeywordsとdescriptionを設定する方法の解説。CakePHP3にはmetaタグを編集するHTMLヘルパーが用意されているためそれを利用すればOK!ポイントはブロック化を有効にすること。