0

在这个事件监听器的服务中,它使用了标签项:

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

1 回答 1

4

标签提供可以附加到服务的名称-键-值属性。他们自己不做任何事情,但其他服务可以利用标签来做一些更有趣的事情。

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

标签名称本身没有在任何地方定义;但是,如果您创建一个CompilerPass在容器中注册的服务,您可以搜索带有特定名称的服务,并对它们做一些有用的事情。(例如注册事件处理程序,如上所述。)

您可以从Symfony 文档中找到有关标记服务的更多信息,包括一个简单的CompilerPass.

于 2016-01-26T19:14:23.300 回答