設定に関するメモ。slimフレームワークの動きを変える設定もあるが、ここでは独自の設定に関して書きます。
##設定の取得/追加
slimインスタンスに対して、独自の設定値の追加と取得について。方法は次の2通りがあります
- コンストラクタに設定の配列を渡す
- Slim::configメソッドを利用する
サンプルコード
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim(array(
// コンストラクタで独自設定を追加
'my' => 'hoge',
));
// Slim::configメソッドで追加
$app->config('my2', 'foo');
$app->get('/', function() use ($app) {
// Slim::configを利用して取得も可能
echo sprintf('my=[%s], my2=[%s]', $app->config('my'), $app->config('my2'));
});
$app->run();
$ curl http://localhost:8000/
my=[hoge], my2=[foo]
2つのタイミングでの設定の追加/取得が確認できました。上記のサンプルでは、key/valueでセットしていますが、第1引数に配列を指定することもできます。
##環境(mode)に応じて設定を変える
slimのmodeとslim::configureModeを利用することで、development/productionなどの環境応じて設定値を変えることができます。
DBの接続情報の違いに利用したり、Slimインスタンスも無名関数内で参照できるので、ルーティングやミドルウェアの追加も可能です。
サンプルコード
<?php
require 'vendor/autoload.php';
$app = new \Slim\Slim(array(
// modeの設定を行う
'mode' => 'development',
));
// modeに応じて設定を追加
// Slim::configureModeは、第1引数で指定した文字列が
// modeと一致した際に第2引数の関数を実行する
$app->configureMode('development', function() use ($app) {
$app->config('msg', 'mode is development');
});
$app->configureMode('production', function() use ($app) {
$app->config('msg', 'mode is production');
});
$app->get('/', function() use ($app) {
// 設定を取り出して出力
echo $app->config('msg');
});
$app->run();
$ curl http://localhost:8000/
mode is development
こちらも確認ができました。サンプルコードのmodeをproductionに変更すると「mode is production」が出力されます。