symfony2中服务设置中标记的目标是什么

时间:2016-01-26 19:08:27

标签: symfony event-listener service-object

在针对eventListener的此服务中,它使用标记项:

services:
    app.exception_listener:
        class: AppBundle\EventListener\ExceptionListener
        tags:
            - { name: kernel.event_listener, event: kernel.exception }
  1. 标签项目的目标是什么?
  2. 如何将名称(名称:kernel.event_listener)定义到此标签项目中?

1 个答案:

答案 0 :(得分:4)

Tags提供了一个可以附加到服务的name-key-value属性。他们自己不做任何事情,但其他服务可以利用标签做更有趣的事情。

在您给出的特定示例中,构建容器时,事件侦听器的编译器传递将查找名为kernel.event_listener的服务,并将该服务注册为{的事件侦听器{1}}事件。

标签名称本身并未在任何地方定义;但是如果您创建了一个在容器中注册的kernel.exception,则可以搜索使用特定名称标记的服务并对其执行一些有用的操作。 (如注册事件处理程序,如上所述。)

您可以从Symfony documentation找到有关已标记服务的更多信息,包括简单CompilerPass的示例。