我正在寻找一个基于Zend Framework的事件驱动架构的良好实现的参考。你能分享一下这个话题的经验吗?
我找到了两个解决方案,但尚未使用它们:
编辑:
示例:
答案 0 :(得分:4)
我在这个主题上没有太多的实践经验,但由于似乎没有其他人回复,我想我会分享我对此的看法......
这在PHP应用程序中可能有点棘手,因为它们通常只在请求期间运行,因此在短时间内能够订阅和侦听通用事件的好处可能不会很大。 / p>
但是,我认为允许您更多地解耦代码会有一些好处。
据我所知,Symfony调度员看起来更好 - 主要是因为它看起来更简单。
我自己使用了一种dojo pubsub类型的系统:基本上你有一个事件发布者,类可以发布事件。这是一种全局事件处理,您没有专门订阅类本身 - 而是订阅特定事件,并且哪个类发布事件无关紧要。
这与订阅特定类的好处是代码更加分离:在我的情况下,它是一个ZF应用程序,订阅事件的类可以简单地在引导程序中执行,而不是必须执行控制器中的订阅(或创建发布者的地方)
这种方法的缺点是它可以使事物之间的依赖关系更难跟踪。例如,您只看到一个事件发布调用,但是如果不进一步深入代码,您就不知道会听到什么样的事情。
在我的情况下,我真的不知道应用程序是否从使用这种架构中获得任何好处 - 实际上我已经多次考虑完全删除它并只使用直接监听事件的对象。