Laravel3、バンドルの設定ファイルの変更
タグ: Laravel3
バンドルの設定ファイルの変更はどうしていますか?
良くできたバンドルでは、設定を設定ファイルに閉じ込めてくれています。ですから、コードを変更しなくても、バンドルの振る舞いを変更できます。
でも、バンドルのconfigフォルダー下の設定ファイルを直接変更してしまうと、バンドルのバージョンアップで上書きされてしまいます。すると、アップデートコマンドによる変更は出来ず、パッケージを落として、設定ファイルを比較する必要が出てしまいます。
そんな時はイベントを利用しましょう。Laravelの実行準備が整ったイベントを受け取り、その時点でバンドルの設定を置き換えましょう。例えばmelonバンドルがあったとしたら、次のようにします。
Event::listen('laravel.started: melon', function() { Config::set('melon::config.count', '10'); });
もし、変更項目が多くある場合は、別に設定ファイルを作成します。例えば、application/config/bundles/melon.php
に設定項目を通常の設定ファイルのように記述します。
return array( 'count' => '10', 'color' => 'red', 'kind' => 'water', 'size' => 'big', );
後は、イベントの中で取り込むだけです。
Event::listen('laravel.started: melon', function() { $config = require_once path('app').'config/bundle/melon.php'; Config::set('melon::setting', array_merge(Config::get('melon::setting'), $config)); });
これでOKです。
もちろんLaravelの開始イベントは、他のことにも使用できます。ご自由に活用ください。
実は試していませんが、グローバルなbeforeフィルターの中で行なっても同じ結果を得られると思いますが、一応Laravel開発者のTaylorさんがすすめているのがこちらの方法ですので、紹介しました。