PHP
slim

phpマイクロフレームワークSlimのmodeによる設定について

More than 3 years have passed since last update.

設定に関するメモ。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」が出力されます。