投稿

11月, 2013の投稿を表示しています

[Symfony2]コンパイル使用&カスタマイズ方法について調べる - 使用方法

Symfony2では設定ファイルで定義したDIの内容を、キャッシュ時にコードとして埋め込む"コンパイル"を利用することができる。・・・のだけれど、実際使用方法とかカスタマイズ方法とかが今ひとつ理解しきれていないので、確認してみる。 多分その気になれば、かなり色々なことができるのではないかと期待しているのだけれど。。。 とりあえずは別途記載した SQL ファイルの内容をクラスに埋め込むというのを目標としてみる。 まずは公式ドキュメントを参考に概要と使用方法を確認してみる。 (翻訳) http://docs.symfony.gr.jp/symfony2/cookbook/service_container/tags.html (原文) http://symfony.com/doc/master/components/dependency_injection/tags.html 概要 設定ファイルのタグに記載した設定をPHPコードとしてキャッシュできる ChainOfResponsibility パターンなどで利用できる 使用時にはタグを設定する PHPコードにできるということはAPCの恩恵に預かれるということなので、できればぜひとも便利に使っていきたいところ。きっと ChainOfResponsibility パターン以外でも利用できる箇所は多い・・・よね? 使用方法 コンパイルを利用するサービスクラスを作成、DI設定を記載 1で設定したサービスにぶち込むクラスを作成、DI設定を記載、タグを付ける Bundle クラスに build メソッドを追加、XxxxCompilerPass の利用を宣言 XxxxCompilerPass クラスを作成、どのタグに対してどんな処理を行うのか記載 サービス生成ロジックのキャッシュコード生成時に、2のDI設定がPHPコードとして固定で記載される XxxxCompilerPass のあたりが肝のようなので、ここで他にどんな処理が可能なのか確認してみるつもり。 http://docs.symfony.gr.jp/symfony2/cookbook/service_container/tags.html#compilerpass それにしても、こ