エス技研

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


CakePHP4で「app_local.php」「.env」を利用して環境ごとの定数を振り分ける方法

      2022/07/16

CakePHP4で「app_local.php」「.env」を利用して定数を定義する方法

 
CakePHP4では、
 「app_local.php」ファイル
 「.env」ファイル
にて定数を定義することができるようになっています。
 
この記事では、「app_local.php」「.env」で定数を定義する方法、呼び出す方法の解説をします。
 
 
ちなみに、「app_local.php」「.env」のいずれも、Gitでの管理対象にはしない設定になっています。
 
 
また、「CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説」では、定数を定義したファイルを「環境変数」を使用して「本番環境」と「開発環境」を振り分ける方法を解説していますので、併せて参考にしてください。
 
 

「app_local.php」を利用して定数を定義する方法

 
CakePHP4では、環境ごとに異なる定数を定義する「/config/app_local.php」と言うファイルが用意されています。
 
「app_local.php」ファイルには
 デバッグモードの設定
 salt
 データベースの接続情報
 SMTPの接続情報
が記載されています。
 
これらの情報は、CakePHP3の頃には「app.php」に記述していましたが、開発環境と本番環境とで異なる情報となりますので、CakePHP4では「app.php」と分けて管理することになっています。
 
(CakePHP3、CakePHP4をインストールし、DB接続情報などの設定する方法の解説などは「CakePHP3、CakePHP4のバージョンを指定してインストールする詳細な手順を解説」を参照してください。)
 
 
ここでは、その「/config/app_local.php」ファイルに開発者が独自に設定する定数を記載して管理する方法を解説します。
 
 
定数を別ファイルに指定して管理する方法については「CakePHP4で定数の設定と呼び出し方法の解説(defineとConfigure)」に詳しく記載しています。
その内容を理解している前提で話を進めさせていただきます。
 
 

「/config/app_local.php」ファイルに定数を定義する

 
まず、「/config/app_local.php」に記載する内容です。
 

 
上記の 10行目~31行目が追加した記述になります。
 
それぞれ、定数を指定する方法、配列を指定する方法、定数を「AppLocalConst」というひとまとめの定数で指定する方法などがあります。
 
 

「/config/app_local.php」に定義した定数を呼び出す

 
続けて、「/config/app_local.php」に記述した定数を呼び出す方法です。
 
「/config/app_local.php」に記載した定数を取得する場合は「Configure::read()」を使用します。
 
下記は、定数を使用する Controllerに「initialize()」を追加してそこで呼び出す記述をしています。
 
Controller全体ではなく、特定の Actionのみで使用する場合は、Actionの中に同様の記述をしてください。
 

 
ちなみに、『配列「AppLocalTest02」内の「test01」を呼び出す』の「その2」の記述方法はむりやり感がありますが、「Configure::read("AppLocalTest02")」の部分で配列を取得していますので、こんな記述方法も可能ではあります。
 
 

「.env」を利用して定数を定義する方法

 
「/config/.env」ファイルを使用して定数を指定する方法を解説します。
 
 

「.env」ファイルの使用できるようにする

 
デフォルトの設定では「.env」の内容を読み込める様になっていませんので、「.env」ファイルを使用できるようにします。
 
/config/bootstrap.php
の 63~69行目の下記の部分のコメント処理を外します。
 

 
 

「.env」ファイルの生成する

 
続けて「.env」ファイルを生成します。
 
CakePHP4では「/config/.env」ファイルはデフォルトでは用意されていませんので、「/config/.env.example」をコピペして「.env」ファイルを作成します。
 
また、「/config/.env」ファイルの 16~21行目の設定は不要ですので、コメントにしておきます。
「.env」ファイルでコメントにする場合は、行頭に「#」を記述します。
 
 
「.env」ファイルに定数を定義する場合は、下記の様に「export」に続けて定義を記述します
 

 
ちなみに、「.env」ファイルで設定できる定数は「文字列のみ」です。
そのため、配列を指定したい場合は、擬似的な対応となります。
 
 

「/config/.env」に定義した定数を呼び出す

 
「.env」ファイルに設定した定数を呼び出す場合は「env()」関数を使用します。
「env()」関数で呼び出す方法は、Controllerでも View(テンプレートファイル内)でも同じ記述で使用できます。
 

 
また、「.env」ファイルに擬似的な配列を指定した場合は、上記のように「explode()」関数にて文字列を配列に分割して使用します。
(文字列の中に「,」がある場合は、「,」以外の区切り文字を使うといいでしょう。)
 
 
また、「.env」ファイルで定義した定数を、「env()」を使わずに定数として呼び出したい場合は、「/config/bootstrap.php」ファイルに下記の様に改めて定数として定義し直す方法があります。
 

 
また、定数を別ファイルで定義する方法については「CakePHP4で定数の設定と呼び出し方法の解説(defineとConfigure)」に記事を書いていますので参考にしてください。
 
 

CakePHP4では「app_local.php」と「.env」のどちらを使う方がいい?

 
CakePHP4で定数を管理する場合
 「/config/app_local.php」
 「.env」
のどちらで定数を定義する方がいいか?
についてですが、「/config/app_local.php」の方がいいのであろうと思います。
 
そもそも、CakePHP4のデフォルトでは「.env」は用意されていませんし(「.env.example」は用意されていますが)、必要な処理はコメントアウトされており使用できるようになっていません。
 
CakePHP4の「.env」は、CakePHP3や他のフレームワークで「.env」ファイルを使用していた方に対して、CakePHP4でも同じ様な使用感で定数を定義するためのオプションなのだと考えています。
 
また、「.env」では配列を定義することができないために使い勝手がいいとは言えず、その点も含めて、「.env」より「app_local.php」を使う方がいいのだろうと思います。
 
ただ、「.env」は「.」で始まるファイルのため、セキュリティの点でちょっとだけ有利なのかも知れません。
 
 
ちなみに、「app_local.php」と「.env」は、基本的に Gitでは管理しないファイルとなっています。
理由は、データベースの接続情報やメールサーバへの接続情報などの機密情報を記載するファイルとなるためです。
 
そのため、この記事では「app_local.php」や「.env」で定数を管理する方法を紹介してはいるものの、開発者が独自に定義する定数は「app_local.php」「.env」には記載しない方がいいのだろうと思います。
 
環境ごとで変わる定数を管理する方法としては、「CakePHP4の定数定義ファイルを環境変数によって本番と開発を振り分ける方法解説」に書いている「環境変数」で定数を振り分ける方法をオススメします。

 - CakePHP 3.x 4.x

GoogleAdwords

GoogleAdwords

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

Message

メールアドレスが公開されることはありません。

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

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

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

  関連記事

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

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

CakePHP3のアソシエーション機能を使い関連レコードをまとめて削除

CakePHP3でレコードを削除する際に関連するレコードをまとめて削除する機能の解説。フレームワークのメリットを存分に発揮し、コマンドを1行追加するだけで実装可能。

CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い

CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。

CakePHP3にデイトピッカー jQuery UI DatePickerを実装する手順の解説
CakePHP3にデイトピッカー jQuery UI DatePickerを実装する手順の解説

CakePHP3にjQuery UIのDatePickerを実装する手順を説明。併せて、デイトピッカーを設置に関連するCakePHP3の解説と、テーマを変更したり、表記を変更するカスタマイズする方法なども紹介。

CakePHP 2.3 Search Pluginで検索処理 その3入力エリア一つで複数の項目を同時に検索する方法

CakePHPの検索プラグイン Search Pluginの検索処理の中で入力エリア一つで複数の項目を同時に検索する方法を解説。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説
CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説

CakePHP3からメールを送信する方法解説。基本的な記述方法を基にして、テンプレートを使う方法、ファイルを添付する方法へと拡張しながら解説。

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合

CakePHP3で開発環境と本番環境とで違う設定ファイルを読み込ませて環境ごとに定数を切り替える方法を解説。Apacheのhttpd.confに環境変数を設定し、それを読み込み判別する。

CakePHP3のインストールでURL rewriting......のエラーが!その解決方法解説
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説

CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。

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

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