Php 使用哪种OOP模式来;“触发”;应用程序事件

Php 使用哪种OOP模式来;“触发”;应用程序事件,php,oop,design-patterns,Php,Oop,Design Patterns,我有一个应用程序,我想实现以下系统。在代码的某些关键位置,我会有如下行 $event_handler->trigger('on_after_init'); 此行将宣布初始化刚刚完成。然后我想让一些随机扩展/插件监听这个和其他事件,并执行他们想要的任何代码。例如,像plugins/after_init/。。。您可以在其中放置一个将被执行的类。或者,我会将它们保存在DB中,以便在需要时也可以调整顺序 虽然我可以构建类似的东西,但我觉得这是一个经典的任务,并且有一个标准的模式。我不想发明自行车

我有一个应用程序,我想实现以下系统。在代码的某些关键位置,我会有如下行

$event_handler->trigger('on_after_init');
此行将宣布初始化刚刚完成。然后我想让一些随机扩展/插件监听这个和其他事件,并执行他们想要的任何代码。例如,像plugins/after_init/。。。您可以在其中放置一个将被执行的类。或者,我会将它们保存在DB中,以便在需要时也可以调整顺序

虽然我可以构建类似的东西,但我觉得这是一个经典的任务,并且有一个标准的模式。我不想发明自行车,所以如果真的是这样,请告诉我相关信息

谢谢

提供了一个事件库,用于触发应用程序中的事件,本质上是您在应用程序中“订阅”和“触发”信号

subscribe(function($event){
    echo "Do something here"
}, 'on_after_init');

fire("on_after_init");

这可以粗略地定义为,尽管它不是一种面向对象的设计模式,而是一种编程模式。

Symfony提供了许多,其中一个是组件,请查看它是否适合您的需要

出于我在中列出的原因,我会避免使用观察者模式。对于这类事情,@ircmaxell最近发布了一篇文章,他在PHP聊天室闲逛,如果你需要澄清的话。此外,冒着自我推销的风险,如果你有兴趣看一个具体的例子,我最近整理了一个例子。