エス技研

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


CakePHP3でユーザ定義の定数、変数を設定し、読み込む方法解説

      2022/07/16

CakePHP3でユーザ定義の定数、変数を設定し、読み込む

 
CakePHP3でサイトの構築をする際に、プログラム全体で使用する定数や変数を設定し、それを呼び出す方法について解説します。
 
 
小規模なサイトであれば、定数、共通変数は「bootstrap.php」に書いていく方法があります。
ファイルを分ける必要もないため、シンプルな方法です。
その方法が「bootstrap.phpに変数を設定する方法」です。
 
ですが、サイトの規模が大きくなると、設定する定数、共通変数も多くなっていき、「bootstrap.php」が肥大化しますので、定数、共通変数は別のファイルに分けて設定する方法もあります。
その方法が「定数、変数を設定するファイルを別にする方法」です。
 
また、定数、変数を別ファイルにする方法は、もう一つやり方がありまして、それが「定数、変数を設定するファイルを別にする方法・その2」です。
 
 
CakePHP4で定数の設定と呼び出し方法の解説(defineとConfigure)
CakePHP4でユーザ定義の定数を設定する方法は、改めて上記に記事を書いていますので、こちらを参考にしてください。
CakePHP4と CakePHP3の設定方法の違いは、「bootstrap.php」に記述する場合は CakePHP3から変更はありませんが、別ファイルに定数を記述する場合は CakePHP3とは少し異なる部分があります。
 
 
 

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

 

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

 
「/app/Config/bootstrap.php」に変数、および、定数を設定します。
 

 
定数を定義する「define()」関数は、PHPの標準関数をそのまま利用できます。
 
変数を定義する場合は、「Configure::write()」を利用します。
引数の 1つ目が「変数名」になり、2つ目がその変数に入れる値になります。
 
2つ目の引数に配列、連想配列を設定することで、定義する変数も配列、連想配列にすることができます。
 
配列を設定しているだけですので、下記のような記述の方法も可能です。

 
 
また、下記の様にまとめて複数の変数の設定をすることもできます。

 
 

定数に配列を指定する(2019.03.16 追記)

 
PHP 5.6以降では定数に配列を設定することができるようになりましたが、「define()」で配列を指定できるのは PHP7以降からです。
 
そのため、PHPのバージョンが 7以降の場合は、CakePHP3でも下記の記述方法で定数として配列を指定することができます。
 

 
この記事では、
 スカラー値(文字列、数値など)「define()」
 配列は「Configure::write()」
のような記述の仕方をしていましたが、PHP7以降は、文字通り
 定数は「define()」
 変数は「Configure::write()」
で指定することになります。
 
 

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

 
定数として指定した情報を呼び出す場合は、呼び出すコントローラーの最初に「use」で「Configure」を呼び出します。
(定数だけを読み込む場合は、「use」の設定は必要ありません。)
 

 
 
各定数、変数を読み込む方法は、以下のようになります。
 

 
 
変数は、view側ではそのままは使えませんが、定数は view側でも直接呼び出して使用することができます。
つまり、定数は、テンプレートファイルに下記の様に記述することで、直接呼び出すことができます。

 


 
 

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

 
続いて、定数、変数を「bootstrap.php」ファイル以外の別ファイルに設定する方法を解説します。
 

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

 
「/app/Config/」フォルダの中に「const.php」ファイルを新規作成します。
(ファイル名は「const.php」にしていますが、ファイル名の決まりはありませんので、自由なファイル名にしてください。)
 
作成したファイルに下記を記述します。
 

 
ここで設定する定数、変数は、「return」の引数として配列で指定します。
そのため、定数、変数の指定行は配列の値となりますので、それぞれの行の終わりは、「;」ではなく「,」で区切ります。
 
配列で指定しますので、下記の様に記述しても問題ありません。
 

 
ちなみに「return」の記述を忘れた場合は、「Config file "const.php" did not return an array」というエラーが表示されます。
 
 
また、ファイルの最初に「use Cake\Core\Configure;」を記述します。
この記述は忘れがちなので、忘れないようにしましょう。
 
記述を忘れた場合は「Error: Class 'Configure' not found」というエラーメッセージがでますので、記述忘れに気づかないことはありませんが...
 
 

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

 
設定した「const.php」ファイルを、「bootstrap.php」に読み込む設定を記述します。
 
「/app/Config/bootstrap.php」に下記を記述します。
 

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

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

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

 
設定した変数、定数を読み込む方法は、先の「bootstrap.phpに変数を設定する方法」と同じですので、ほぼコピペになりますが以下のようになります。
 
 
定数として指定した情報を呼び出す場合は、呼び出すコントローラーの最初に「use」で「Configure」を呼び出します。
 

 
 
各定数、変数を読み込む方法は、以下のようになります。
 

 


 
 

定数、変数を設定するファイルを別にする方法・その2

 
定数、変数を「bootstrap.php」ファイル以外の別ファイルに設定する方法のその2を解説します。
この方法は、CakePHP2のころも利用できた方法です。
 
 

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

 
「/app/Config/」フォルダの中に「const.php」ファイルを新規作成します。
(ファイル名は「const.php」にしていますが、ファイル名の決まりはありませんので、自由なファイル名にしてください。)
 
作成したファイルに下記を記述します。
 

 
 

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

 
設定した「const.php」ファイルを、「bootstrap.php」に読み込む設定を記述します。
(この設定方法は、「定数、変数を設定するファイルを別にする方法」と同じです。)
 
「/app/Config/bootstrap.php」に下記を記述します。
 

 
こちらも「定数、変数を設定するファイルを別にする方法」と同じく、「bootstrap.php」の 75行目辺りから始まる、他のファイルもロードしている処理に追記する方がより良いでしょう。(下記 5行目、6行目を追加しています。)
 

 
 

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

 
設定した変数、定数を読み込む方法も、「定数、変数を設定するファイルを別にする方法」と同じですので、ほぼコピペになりますが以下のようになります。
 
 
定数として指定した情報を呼び出す場合は、呼び出すコントローラーの最初に「use」で「Configure」を呼び出します。
 

 
 
各定数、変数を読み込む方法は、以下のようになります。
 

 
 

広く知られている方法は「その2」の方である

 
「その2」として紹介した方法が、多くのブログで紹介されている方法です。
ですが、「その2」の方法は、「bootstrap.php」に直接記述しても情報を取得することができず、また、「use Cake\Core\Configure;」を記述していなかったことでうまく動作しませんでした。
 
そのため、エラーを解消するために調べたときに「その1(定数、変数を設定するファイルを別にする方法)」の方法に行きつき、先に「その1」の方の記事を書きました。
 
その後さらに調査した結果、「その2」も上記の手順であれば動作させることもできたため、「その2」の方法も記事に入れることにしました。
 
 
CakePHP3 オフィシャルサイト 環境変数
https://book.cakephp.org/3.0/ja/development/configuration.html#environment-variables
 
ただ、「その1(定数、変数を設定するファイルを別にする方法)」は、上記のオフィシャルサイトに記載されている方法に基づいて書いています。
CakePHP3では新しい仕組みも増えてきていますので、「その1」の方が活用用途は高いかもしれません。
 
 

CakePHP3の関連記事

CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法

CakePHP3でテーブルのアソシエーションしたデータの取得をコントローラー側でINNERかLEFTを指定する方法を解説。TableファイルにINNERで指定していてもController側で変更ができる。

CakePHPで favicon.icoやapple-touch-icon-144-precomposed.pngが could not be foundのエラーが出るときの対処方法
CakePHPで favicon.icoやapple-touch-icon-144-precomposed.pngが could not be foundのエラーが出るときの対処方法

CakePHPで「CakeDC/Users」などルーティングを行うプラグインを利用するときに、favicon.icoやapple-touch-icon-144-precomposed.pngがNotFoundエラーになることがある。その対処方法の解説。

CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る

他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。

CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法

CakePHP3でテンプレートファイルやレイアウトファイルをデフォルトのものから別のものに変更したい場合の指定方法を解説。

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

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

CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法
CakePHP3で /Layout/defult.ctpにある titleタグ、h1タグを編集する方法

CakePHP3でtitleタグ、h1タグのテキストをデフォルトから変更する方法を解説。テンプレートファイルに「$this->assign()」でテキストを指定して「/Layout/defult.ctp」で受け取る。

CakePHPを学ぶ際にはオブジェクト指向を学ぼう

CakePHPはオブジェクト指向で書かれていますので、CakePHPを学ぶにはオブジェクト指向も学びましょう。

CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを

CakePHP3でルーティングの設定変更をしたけど反映されない!そんなときは慌てず騒がずキャッシュをクリアしよう!ルーティングの設定もキャッシュされることがあるらしい。

CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説
CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説

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

CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説

CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。