Symfony中的事件监听器与订户

时间:2017-10-29 14:09:57

标签: php symfony events

我从文档中了解到订阅者已经知道它应该订阅什么,但是现在我怀疑在定义监听器时我们提供了应该像这样触发的确切事件

kernel.listener.my_listener:
    class: myBundle\EventListener\MyListener
    arguments:
        - @doctrine.orm.entity_manager
        - @twig
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: myMethod}

所以听众确切地知道什么时候开火 但是对于订户,我们会像这样注册

kernel.listener.my_listener:
    class: myBundle\EventListener\myListener
    arguments: ["@service_container"]
    tags:
    - { name: kernel.event_subscriber }

现在,我的问题是订阅者如何知道何时触发或在每个事件中触发?

1 个答案:

答案 0 :(得分:4)

订阅者有一个事件列表 - getSubscribedEvents()方法。事实上,只有那个需要它的EventSubscriberInterface标记的方法定义了一个类是一个事件订阅者。

在启动期间(当编译容器时)调用它,然后从订阅的事件构建侦听器。

Using Event Subscribers