誰かがコンパイラパスが何であるか説明できますか?Symfony2のコンパイラパスの説明?
11
A
答えて
25
CompilerPass
実装は、依存関係注入コンテナが設定ファイルから構築された後でプレーンなPHPとしてキャッシュに保存される前に実行される何らかのリスナーです。外部リソースからの定義へのアクセスが必要な構造や、XML/YAML構成では利用できないプログラミングが必要な構造を構築するために使用されます。 DIC全体を変更できる「最終フィルタ」とみなすことができます。
TwigBundleとそのTwigEnvironmentPassを考えてみましょう。何それがないことは非常に簡単です:
- が
twig.extension
タグでタグ付けされたすべてのサービスを探す(<service id="twig" class="..." ...>
として定義)twig
サービス - への参照を取得します。これを行うには、(XML構成ファイルから構築された)完全なDICを、どのバンドルでも定義できるため、作業してください。
- サービス作成方法のカスタムコードを作成します。
最終的な結果として、次のコードが生成されます。
protected function getTwigService()
{
$this->services['twig'] = $instance = new \Twig_Environment($this->get('twig.loader'), ...);
// THIS HAS BEEN ADDED THANKS TO THE TwigEnvironmentPass:
$instance->addExtension(new \Symfony\Bundle\SecurityBundle\Twig\Extension\SecurityExtension($this->get('security.context')));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\TransExtension($this->get('translator')));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\TemplatingExtension($this));
$instance->addExtension(new \Symfony\Bundle\TwigBundle\Extension\FormExtension(array(0 => 'TwigBundle::form.html.twig', 1 => 'SiteBundle::widgets.html.twig')));
$instance->addExtension(new \MyProject\SiteBundle\Twig\Extension\MyVeryOwnExtensionToTwig($this));
return $instance;
}
+0
良い説明、ありがとう! – acme
関連する問題
- 1. Symfony2フォームイベントの説明?
- 2. PhoneGapの説明
- 3. デバイスリグレッションテストの説明
- 4. NSMutableArrayの説明
- 5. プロローグコードの説明
- 6. VHDLの説明
- 7. tf.Tensor.set_shape()の説明
- 8. リーダークラスタリングアルゴリズムの説明
- 9. dFdxの説明
- 10. スクロールバーの説明
- 11. アセンブリの説明
- 12. ArrayListの説明
- 13. ダイナミックメタの説明
- 14. カウントスケッチアルゴリズムの説明
- 15. Funcの説明
- 16. フィールドの説明
- 17. INFORMATION_SCHEMA.RIGHTSの説明
- 18. この説明を教えてくださいsymfony2とZendFramework 2のパフォーマンス結果
- 19. 説明
- 20. 説明
- 21. 説明
- 22. iOSローテーションマトリックスの説明
- 23. ウェブサイトのビデオ説明
- 24. 動作の説明
- 25. Androidアプリの説明
- 26. IplImage * imgの説明
- 27. ダッパーバッファー/キャッシュの説明
- 28. デバイスの説明ボキャブラリー
- 29. Webserviceパラメータの説明
- 30. Androidスタイルの説明
を私はCompilerPassが何をするかについての質問があまりにもローカライズされていることがわかりません。 –