エス技研

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


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

   

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つ目の引数に配列、連想配列を設定することで、定義する変数も配列、連想配列にすることができます。
 
配列を設定しているだけですので、下記のような記述の方法も可能です。

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

 
 

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

 
定数として指定した情報を呼び出す場合は、呼び出すコントローラーの最初に「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で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
Google Analytics APIを CakePHP3で動かしてレポートデータを取得する方法の解説
CakePHP3でComposerでインストールできないプラグイン、外部ライブラリを vendorに入れて手動で読み込む方法
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3で生の SQLの実行はConnectionManagerを使う
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3のデバッグキット(DebugKit)を強制的に有効、無効に変更する方法
CakePHP3でWarning Error: SplFileInfo::openFile()エラーが発生した場合の対処方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説
CakePHP3にWYSIWYGエディタのCKEditor4を設置、カスタマイズ方法を解説

WYSIWYGエディタであるCKEditor4をCDNを利用して簡単にCakePHP3に導入する方法とカスタマイズする方法を解説。CakePHP3にはページごとの振り分けを行うブロック化を利用する。

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

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

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP 2.3 bakeの超初心者向けフォロー講座

CakePHP3でcomposerを利用してライブラリ・プラグインをインストールする方法

CakePHP3でcomposerを使ってパッケージ(ライブラリ、プラグイン)をインストールする方法の解説。PHPを使うのはCakePHP3が初めてというような方への使い方から解説。

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

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

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

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

CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説

CakePHP3で静的なページを設置する場合の方法(webrootとpagesとを活用する方法)を解説。pagesの解説はデフォルトのトップページがどう表示されているかを参考に解説。ルーティングの機能も。

CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う

CakePHP3では処理を高速化する手法の一つとしてキャッシュを利用している。しかし、その情報は元の情報を更新しても反映されない場合がある。そんなときはキャッシュを削除する必要がある。

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

CakePHP3ログファイルの出力方法・$this->log()の解説
CakePHP3ログファイルの出力方法・$this->log()の解説

コントロール、モデルの変数の中身を見るときはログに出力する方法が有効です。$this->log()を利用すると変数だけじゃなく、連想配列、オブジェクトも簡単にログ出力ができます。