こんばんは。ファガイです。
本日は、CakePHP3のConfigureクラスに関して調べました。
使用環境
- CakePHP3-RC1
- PHP5.4
- MariaDB
はじめに
基本的にConfigureクラスの動作を確認するのはconfig/bootstrap.phpで行いました。ちょうど、try-catchで書かれている箇所があるため、ここを参考にしました。
また、マニュアルを見ていただくと詳しく載ってるので、そちらを確認するとよいでしょう。
Configuration — CakePHP Cookbook 3.x documentation
2系との違い
2系では、PhpReaderだったのが、3系では、PhpConfigに変更されてたりします。
現状でRC1に搭載されているのは以下です。
- PhpConfig – PHPで書くConfig
- IniConfig – INIファイルで書くConfig
ほかに、予定されている物は以下となります。
- JsonConfig – JSONで書くConfig
途中までCakePHP2と違うのかなって思って書いてたのですが、ほとんど一緒ですね・・・。
基本的な使い方
ConfigEngine定義
Configに使用するConfigEngineを定義します。(bootstrapには現在PhpConfigのみ登録されています。
use Cake\Core\Configure\Engine\PhpConfig;
// Configエンジン名をdefaultとしてPhpConfigエンジンを定義(エイリアスっぽいの
Configure::config('default', new PhpConfig());
このConfigEngineは他のエンジンや、自分で作ったエンジンも利用可能です。一度PhpConfigのソースを見てみると良いでしょう。
ファイルのロード
Engineのセットが完了したら、ファイルをロードしましょう。
// config/app.phpを読み込む。使用するエンジンはdefault。マージしない
Configure::load('app', 'default', false);
一応コメントに書いていますが、おそらくよく分からなくなるのはマージの部分でしょう。
マージはfalseの場合、上書きとなります。少し、説明が必要かもしれません。
[
'item' => array(
'id' => 1,
'name' => 'Cake'
)
]
と
[
'item' => array(
'id' => 2
)
]
があったとして、前者を先にロードしておいて、後者をマージしないにすると、
[
'item' => array(
'id' => 2
)
]
となります。逆に、マージするにすると、
[
'item' => array(
'id' => 2,
'name' => 'Cake'
)
]
となります。
また、読み込むエンジンが別だとしても、データは同じ場所に格納されるようになっています。
PhpConfigの形式に関して
ちょっと余談にはなりますが、おそらくPhpConfigの形式は次のバージョンから変わると思います。
まあ、変わる内容っていうのは単純に変数として持つのではなくて、戻り値として渡す形になると思われます。(devバージョンを見る感じ)
今は以下の様にconfigを書きますが
$config = [];
いずれこの形になるでしょう。
return [];
読み込んだConfigを確認する
// Appキーの中にあるencodingキーを取得する
Configure::read('App.encoding');
Configが存在するか確認する
Configure::check('App.encoding');
Configの一つのキーを削除する
Configure::delete('App.encoding');
Configを読んだ後、そのキーを消す
Configure::consume('test');
ConfigEngineを削除する
Configure::drop('default');
まとめ
Configureクラスはいつもどおりでした・・・w
まあ、知らない内容も知れたのでよかったです~。
ではではー。
コメント
Configure::write(‘Signup.twitter.consumerKey’,”taroman”);
$config = Configure::read(‘Signup.twitter.consumerKey’);
で書き込みもいけます。