CakePHP3で定数を使ってみた。
2017/06/27 追記
この記事、結構見られているようなので関連項目として「グローバル配列」の記事を書いてみました。
tsuralabo.hatenablog.com
もしよろしければこちらの記事もご覧くださいませ。
その昔、C#で開発していた頃はよく定数ファイルを使っていたのですが、PHPメインになってからあまり使わなくなりました。
定数使うのであればConfigファイルに書いてしまうタイプです。
とは言え、そんなことをやっているとConfigファイルが肥大化してしまいます。
定数ファイルを1つ作ってダーッと書くのもいいとは思うのですが、用途でファイルを分けた方が後々幸せになれるかもしれません。
「この定数ファイルは〇〇用」で「あっちの定数ファイルは□□用」みたいな。
好みの問題かもしれませんが。
今回書いている定数とは、グローバル定数の位置付けのつもりで書いてます。
パスワードとかをブチ込むと怖いですが、例えばViewに表示するメッセージとかdatatablesのパラメータとか。
そういうのを書くと便利じゃないかなと思います。
とは言え、定数ファイルを嫌う方もやはりいらっしゃいますので、その辺は柔和な対応をして下さい。
CakePHP3の定数ファイル、いわゆるdefine宣言は配列で返す必要があります。
要するにConfigファイルと同じです。
sample-const.phpなんて名前でconfigディレクトリ直下にファイルを作ります。
書き方はapp.phpと同じです。
<?php return [ // datatables設定 define('SAMPLE_NUMBER', 10), define('SAMPLE_STRING', 'test'), ];
ファイルを作った後はbootstrap.phpの方でロードしましょう。
<?php try { Configure::config('default', new PhpConfig()); Configure::load('app', 'default', false); /* 必要あればこの辺りに環境変数での切り分けなど */ // 定数ファイル読み込み Configure::load('sample-const', 'default'); } catch (\Exception $e) { exit($e->getMessage() . "\n"); }
ここまでやればあとはViewでもControllerでも好きな場所で使えます。
echoで出力したり、パラメータに入れたりなどなど。
<?php // testが表示されます。 echo SAMPLE_STRING;
必要あればどこかで使って下さい。