エス技研

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


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

      2019/08/16

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

 
CakePHP3でサイトの構築をする際に、プログラム全体で使用する定数や変数を設定し、それを呼び出す方法について解説します。
 
 
小規模なサイトであれば、定数、共通変数は「bootstrap.php」に書いていく方法があります。
ファイルを分ける必要もないため、シンプルな方法です。
その方法が「bootstrap.phpに変数を設定する方法」です。
 
ですが、サイトの規模が大きくなると、設定する定数、共通変数も多くなっていき、「bootstrap.php」が肥大化しますので、定数、共通変数は別のファイルに分けて設定する方法もあります。
その方法が「定数、変数を設定するファイルを別にする方法」です。
 
また、定数、変数を別ファイルにする方法は、もう一つやり方がありまして、それが「定数、変数を設定するファイルを別にする方法・その2」です。
 
 
 

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の関連記事

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3でkeywords、DescriptionをHTMLヘルパーを使って設定する
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得
CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得

URLやドメイン、フォルダへのパスの取得は、ビューではUrlHelperを使い、コントローラーではRouterクラスを使います。第2引数の指定でURLを取得することも可能。

CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数

CakePHP3で特定フォルダのパスの定数を解説。root、DocumentRoot、app、config、webroot、tests、tmp、cache、vendor、コア、コアの srcが設定済み。realpath()関数を使うと柔軟なパス指定が可能。

CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装

CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

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

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

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

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

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で画像・ファイルのアップロード処理を自作・解説付き・その2
CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2

ファイルのアップロード機能の自作サンプルコードとその解説のその2。アップロード機能に関連するファイルの更新や削除の処理や画像、フォルダのパスの指定方法などを含めて解説。

CakePHP3のバージョンを指定してインストールする詳細な手順を解説
CakePHP3のバージョンを指定してインストールする詳細な手順を解説

CakePHP3のバージョンを指定してインストールする方法を詳細解説。CakePHP3のインストールはComposerを使うため設定もほぼ自動で完了。データベースの接続情報を記載すればアプリ開発のベースが整う。

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。