やっと設定ファイルのキャッシュ機構が分かった
どうすればプラグインの中の設定ファイルをキャッシュできるか悩んでいたんですが、分かると簡単でした。
キャッシュを行うにはconfig_handlers.ymlという設定ファイルに、どういった設定ファイルなのか認識させる必要があります。
このファイルはプラグインの中の config/ に置くことも可能です。
書き方はこんな感じ
# config_handlers.yml # 設定ファイルの各ROOTからの相対パス # - sf_root_dir # - sf_root_dir/sf_apps_dir/sf_app_dir # - sf_plugins_dir/* config/foo.yml: config/foo_bar.yml: config/foo/bar.yml: # *も使えます。 config/foo/*.yml: config/foo/*/bar.yml # 指定した設定ファイルに対するパラメータ指定 # 設定ファイルをキャッシュに吐き出すためのパーサークラスの指定 class: sfDefineEnvironmentConfigHandler class: myConfigHandler # 吐き出したパーサーに対してパラメータを渡せます。 param: prefix: foo_ foo: bar
そして、呼び出すときは、config_handlers.ymlで指定したパス名みたいに、各ROOTからの相対パスで書きます。
<?php include sfContext::getInstance()->getConfigCache()->checkConfig('config/foo.yml'); include sfContext::getInstance()->getConfigCache()->checkConfig('config/foo_bar.yml'); include sfContext::getInstance()->getConfigCache()->checkConfig('config/foo/bar.yml');