誰かがコンパイラパスが何であるか説明できますか?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. Powershell:c#コンパイラパス
- 3. veins/sumo「hello world」の説明の説明
- 4. QT VC CMakeコンパイラパス
- 5. この説明を教えてくださいsymfony2とZendFramework 2のパフォーマンス結果
- 6. ArrayListの説明
- 7. プロローグコードの説明
- 8. ダンジョンゲームソリューションの説明
- 9. インパラクエリメタデータの説明
- 10. PowerShellの - 説明
- 11. ハートビートの説明
- 12. INFORMATION_SCHEMA.RIGHTSの説明
- 13. リーダークラスタリングアルゴリズムの説明
- 14. デバイスリグレッションテストの説明
- 15. dFdxの説明
- 16. Funcの説明
- 17. VHDLの説明
- 18. ダイナミックプログラミングソリューションの説明
- 19. concatMapの説明
- 20. テンソルフローエンコーダーの説明
- 21. オフセットアルゴリズムの説明
- 22. アリストテレスナンバーパズルの説明
- 23. スウィフトシンタックスの説明
- 24. SQLの説明
- 25. ダイナミックメタの説明
- 26. ハイレベルの説明
- 27. フィールドの説明
- 28. tf.Tensor.set_shape()の説明
- 29. Makefileの説明
- 30. JSXの説明
を私はCompilerPassが何をするかについての質問があまりにもローカライズされていることがわかりません。 –