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

What is the goal of the tags in service settings in symfony2

在这个 eventListener 服务中,它使用了 标签 项目:

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

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

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

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

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