对象如何订阅事件?

时间:2013-10-23 08:19:03

标签: php symfony mediator

我有一个实现EventSubscriberInterface的订阅者。但是,在Event dispatcher component documentation中,如果要订阅某个活动,我应该致电$dispatcher->addSubscriber()

现在,对于我的示例,假设您有一个Mailer类订阅某些事件并发送电子邮件。我的基本问题是,在哪里可以将其添加到应用程序中,以便将此对象作为应用程序范围内的侦听器添加?换句话说,在事件发生之前,我应该在哪里调用必须运行的$dispatcher->addSubscriber()

1 个答案:

答案 0 :(得分:1)

我一遍又一遍地重复着自己:

Dev的规则编号1(一):手册页是程序员最好的朋友

您需要了解的所有信息都在Symfony Docs,您感兴趣的部分如下:

配置监听器/订阅者

现在已经创建了类,您只需要将其注册为服务,并通过使用特殊的“标记”通知Symfony它是kernel.exception事件的“监听器”: YAML

# app/config/config.yml
services:
    kernel.listener.your_listener_name:
        class: Acme\DemoBundle\EventListener\AcmeExceptionListener
        tags:
            - { name: kernel.event_listener, event: kernel.exception, method: onKernelException }