4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

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

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?