使用Listener作为服务而不是服务有什么好处

时间:2012-08-09 13:33:43

标签: php service symfony listener

仅供参考我只是开始使用Symfony,就是说......

使用Listener作为服务而不是服务有什么优势?

查看我看到的文档我可以使用Listener作为服务:

但我也可以使用Event Dispatcher:

获得相同的功能还是我错过了什么?

我要做的是创建一个侦听自定义事件的服务,我对上面的场景我应该采取的路线有点困惑。我看过一些关于每个设置的帖子,但没有比较两者和差异。

感谢您的任何见解

2 个答案:

答案 0 :(得分:2)

简而言之,Symfony应用程序中的事件类似于JavaScript中的事件:您不是在监听与UI相关的事件(例如鼠标点击,悬停等),而是在监听应用程序中的任意事件(例如异常)获得投掷,发送响应,创建用户等)。

EventDispatcher是围绕observer模式构建的。对于任何发生的事件,调度员通知所有已注册的听众有关该事件。当然,您可以从服务容器中检索调度程序并手动注册侦听器,但这不允许我们事先监听被触发的事件。更糟糕的是,侦听器仅在该控制器操作中注册。

通过将侦听器配置为服务,您实际上是让框架自己执行注册过程。如果你看一下app/cache/dev/appDevDebugContainer.php(可能是一个不同的名字,写下我的头脑)并搜索event_dispatcher,你应该能够看到事件是如何被自动注册的。

答案 1 :(得分:0)

顾名思义,偶数监听器“监听”事件,而事件调度员“发送”(发送)它们。

如果您想要一个侦听自定义事件(即您创建的事件)的服务,那么您必须创建一个事件调度程序来发送事件,一个偶数监听器来监听它们