1

現在、symfony2 拡張機能の 1 つをテストしようとしています。そのために、コンテナビルダーをインスタンス化し、拡張機能を登録しました。

問題は、私の拡張機能には他の拡張機能をコンパイルする必要があることです (他の拡張機能の一部のサービスは、テスト済みの拡張サービスに挿入されます)。そのため、コンテナをコンパイルできるようにするために、これらの他の拡張機能を登録する前に登録しました。

$container = new ContainerBuilder();

$container->registerExtension(new AcmeOtherExtension());
$container->registerExtension(new AcmeMainExtension());

// Loads configuration

$container->compile();

現時点では、いくつかのコンパイル パスが欠落しているため、コンテナーはコンパイルを拒否します。したがって、次の行を追加しました。

$container->getCompilerPassConfig()->setOptimizationPasses(array(new ResolveDefinitionTemplatesPass()));
$container->getCompilerPassConfig()->setRemovingPasses(array());

これらの行を使用すると、コンテナーをエラーなしでコンパイルできますが、他の拡張機能からのサービスを挿入したサービスを要求すると、コンテナーは例外をスローし、他の拡張機能で定義されているサービスが存在しないことを通知します。

コンテナー パスとコンパイルに関するヒントを教えてもらえますか?

4

0 に答える 0