我需要在我自己的代码库(自定义PHP库)中集成一个事件调度程序,因此我查看了Symfony2和Zend Framework 2正在做什么。
显然,没有用于调度事件的共享接口,因为两个框架都有不同的需求并决定实现自己的代码......所以我有点迷失:我不想重新发明我的个人轮子。
用于实现观察者模式的SPL接口可能有点幼稚,所以我在这里问你:你会做什么?
修改
由于目前尚不清楚......我想重新使用现有的ED,让开发人员将其注入我的库中。
假设您使用调度程序开发了一个lib,并且您知道您的lib将成为Symfony Bundle的一部分并在ZF项目中重用:您肯定希望重新使用Symfony和ZF调度程序,而不是你自己的。
因此,我一直在为主流库中实现的现有调度程序寻找共享接口,但听起来似乎没有解决方案。
答案 0 :(得分:4)
您可以根据需要定义接口,然后为每个框架使用不同的适配器实现它。
答案 1 :(得分:2)
我认为你选择一种广泛使用的组件的第一直觉是要走的路。
这两个是我也会考虑的选择。你应该简单地看一下它们,然后选择你觉得最适合你的那个。
无耻的插件:如果你想要一些非常轻巧的东西,你可以看看Événement。
答案 2 :(得分:2)
您需要通过实现PHP接口SplObserver,SplSubject来实现观察者模式。不仅仅是Zend,Symphony这样做是为了支持钩子,但通常每个事件调度程序都通过实现观察者模式来这样工作。
的文章答案 3 :(得分:1)
旧帖子已经被接受,但有一个解决方案可以解决PHP中EDP解决方案的问题,因为我遇到了这个问题。
该功能与Symfony和Zend的实现有很大不同,因为它们没有需要扩展以使用库的接口或类,而是简单地调用典型的php函数来处理事件调度。
// Subscribe to dispatched events
subscribe(callback, signal)
// Dispatch an event
fire(signal)