またどこかでCTOっぽいことやってる人のブログ

フリーランスを経て、またどこかでCTOっぽいことをやってる人が書いてます。何か色々やってます。

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;


必要あればどこかで使って下さい。