コンパイラ パス ( を実装するクラスCompilerPassInterface
) を作成し、それをコントローラーの 1 つから DI コンテナーに登録したいと考えています。私がやろうとしているのは、特定のサービス X に、特定の方法でタグ付けされた他のサービス (Y、Z、...) を収集させることです。コントローラーの外側では、次のようにします。
$container = new ContainerBuilder();
$container->addCompilerPass(new TransportCompilerPass);
しかし、私の場合は、アプリケーションに追加した services.xml の定義を利用できるように、コントローラーで使用できるコンテナーを使用したいと考えています。コントローラーの $this->container にget
メソッドはあるがaddCompilerPass
. $this->container
ではないため、明らかにそうであるに違いありませんContainerBuilder
。
とにかく...誰か私にそれを回避する方法を教えてもらえますか?