我写了一个编译器通道(一个实现的类CompilerPassInterface
),我想将它注册到我的一个控制器的 DI 容器中。我想做的是让某个服务 X 收集以某种方式标记的其他服务(Y、Z、...)。在控制器之外,我会简单地做:
$container = new ContainerBuilder();
$container->addCompilerPass(new TransportCompilerPass);
但在我的情况下,我想使用控制器可用的容器,以便我可以利用添加到我的应用程序的 services.xml 中的定义。我觉得很奇怪控制器的 $this->container 有get
方法但没有addCompilerPass
. 显然它一定是因为$this->container
不是ContainerBuilder
.
无论如何......谁能告诉我一个解决方法?