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