Symfony2 - 在命令中查找标记服务

时间:2012-08-31 08:16:04

标签: symfony dependency-injection command symfony-2.1

我想知道是否有办法在Command中找到标记服务。

我有一个扩展ContainerAwareCommand的命令,我可以访问容器,但我想获得所有由特定标记标记的服务。例如,我想有类似的东西:

$this->getContainer()->findTaggedServiceIds('smtp.transport')

1 个答案:

答案 0 :(得分:11)

标记服务仅在依赖项注入容器的构建时可用,而不是在运行时。因此,要获得具有特定标记的所有服务,您需要构建一个编译器传递,以保存这些服务的列表,然后您可以在命令中使用这些服务。这一切都在本文档中描述:

http://symfony.com/doc/current/components/dependency_injection/tags.html