7

我需要在我自己的代码库(自定义 PHP 库)中集成一个事件调度程序,所以我查看了Symfony2Zend Framework 2都在做什么。

显然,调度事件没有共享接口,因为两个框架有不同的需求并决定实现自己的代码......所以我有点迷茫:我不想重新发明我的个人轮子。

可能实现观察者模式的 SPL 接口有点幼稚,所以我在这里问你:你会怎么做?

编辑

由于不清楚...我想重新使用现有的 ED,让开发人员将其注入我的库中。

假设您使用调度程序开发了一个库,并且您知道您的库将成为 Symfony Bundle 的一部分并在 ZF 项目中重用:您肯定想重用 Symfony 和 ZF 的调度程序,而不是您自己的。

因此,我一直在为主流库中实现的现有调度程序寻找共享接口,但听起来没有解决方案。

4

4 回答 4

4

您可以根据需要定义一个接口,然后为每个框架使用不同的适配器来实现它。

于 2011-10-10T23:38:44.563 回答
2

我认为您选择一个广泛使用的组件的第一直觉是要走的路。

这两个也是我会考虑的选项。你应该简单地看一下它们,然后选择你认为最适合你的那个。

无耻的插件:如果你想要一些非常非常轻巧的东西,你可以看看 Événement

于 2011-10-02T21:33:50.103 回答
2

您需要通过实现 PHP 接口 SplObserver 、 SplSubject 来实现观察者模式。不仅仅是 Zend,Symphony 这样做是为了支持钩子,而且通常每个事件调度程序都通过实现观察者模式以这种方式工作。

这里有一篇文章可以了解更多http://devzone.zend.com/article/4284

于 2011-10-03T01:48:26.787 回答
1

已被接受的旧帖子,但是对于像我一样遇到此问题的人,有一个解决方案可以减少 PHP 中的 EDP 解决方案。

http://prggmr.org

该功能与 Symfony 和 Zend 的实现有很大不同,因为它们没有需要扩展以使用该库的接口或类,而您只需调用典型的 php 函数来处理事件调度。

// Subscribe to dispatched events
subscribe(callback, signal)

// Dispatch an event
fire(signal)
于 2012-03-06T19:28:31.240 回答