在针对eventListener的此服务中,它使用标记项:
services:
app.exception_listener:
class: AppBundle\EventListener\ExceptionListener
tags:
- { name: kernel.event_listener, event: kernel.exception }
答案 0 :(得分:4)
Tags提供了一个可以附加到服务的name-key-value属性。他们自己不做任何事情,但其他服务可以利用标签做更有趣的事情。
在您给出的特定示例中,构建容器时,事件侦听器的编译器传递将查找名为kernel.event_listener
的服务,并将该服务注册为{的事件侦听器{1}}事件。
标签名称本身并未在任何地方定义;但是如果您创建了一个在容器中注册的kernel.exception
,则可以搜索使用特定名称标记的服务并对其执行一些有用的操作。 (如注册事件处理程序,如上所述。)
您可以从Symfony documentation找到有关已标记服务的更多信息,包括简单CompilerPass
的示例。