久しぶりに cakephp のメモでも.
cakephp でグローバル変数を使いたいときの設定方法について書いてみたいと思います.
まず,config/ 以下に変数を定義する適当なファイルを作成.昔は $config って変数名を使ってたけど,今は配列で return してあげる方が良いみたいですね.
config/hoge.php 中に
<?php
return [
'hoge' => [
'aa' => [
'a' => 'x',
'b' => 'y',
'c' => 'z'
],
'bb' => 'kk'
]
]
などの定義を記述.
次,config/bootstrap.php 中で
Configure::load('hoge', 'default', true);
で読み込みます.'hoge' はファイル名,'default' はデフォルト環境で使っているって事ね.Configure::config でいろんな環境を作成している場合には適当に使い分けてください.第3引数は既存定義を上書きする・しないの設定.true で上書きしません.
Configure::load('hoge', 'default', false);
にすると上書き.
で,Table や Controller 中から呼び出して使うときは
use Cake\Core\Configure;
してから
$hoge = Configure::read('hoge');
な感じかな.
$aa = Configure::read('hoge.aa');
$a = Configure::read('hoge.aa.a');
とかも可能ですね.foreach で
foreach (Configure::read('hoge.aa') as $key => $value) {
...
}
とか.
上記はあくまでもアプリ全体で使いたい変数がある場合.当然,Controller 中だけ定義されてればいいものは AppController 中で定義した方が良いかと思います.できるだけ局所的にってことね.
また,上記は php 記述で定義しましたが,私自身は使ったことないですけど ini とか json でもかけるみたいですね.その他いろんな事も出来ますが,詳細は https://book.cakephp.org/3.0/ja/development/configuration.html# を参考にしてください.
まぁ,cakebook に書いてることの焼き直しですけど,ちょっとかみ砕いた感じで書いてみました.