我想知道是否有办法在Command中找到标记服务。
我有一个扩展ContainerAwareCommand
的命令,我可以访问容器,但我想获得所有由特定标记标记的服务。例如,我想有类似的东西:
$this->getContainer()->findTaggedServiceIds('smtp.transport')
答案 0 :(得分:11)
标记服务仅在依赖项注入容器的构建时可用,而不是在运行时。因此,要获得具有特定标记的所有服务,您需要构建一个编译器传递,以保存这些服务的列表,然后您可以在命令中使用这些服务。这一切都在本文档中描述:
http://symfony.com/doc/current/components/dependency_injection/tags.html