我有一個應用程序,我想要實現以下系統。在代碼的某些關鍵的地方,我會如哪個OOP模式用於「觸發」應用程序事件
$event_handler->trigger('on_after_init');
此行將宣佈,初始化剛剛過完線。然後我想有一些隨機擴展/插件監聽這個和其他事件並執行他們想要的任何代碼。比如像plugins/after_init/...這樣的東西,你可以放一個類來執行。或者可能我會將它們保存在數據庫中,以便我可以根據需要調整訂單。
雖然我可以建立類似的東西,但我覺得這是一個經典的任務,並且存在一個標準模式。我不想發明自行車,如果真的如此,請告訴我相關信息。
謝謝!
我會避免爲我在[這個答案]中列出的原因,觀察者模式(http://stackoverflow.com/questions/9776364/whats-the-proper-way-to-use-symfonys-eventdispatcher-component/ 9790350#9790350)。 Mediator模式或責任鏈通常對此類事物更好... – rdlowrey 2012-03-21 20:29:57
此外,@ircmaxell最近發佈了[一個調查整個主題的博客](http://blog.ircmaxell.com/2012/03/handling -plugins-in-php.html),如果你需要澄清,他會在PHP聊天室中空閒。此外,冒着自我推銷的風險,這裏有一個[面向對象的中介模式實現](https://github.com/rdlowrey/Artax/blob/master/Core/src/Artax/Events/Mediator.php)如果你有興趣看到一個具體的例子,我最近放在一起。 – rdlowrey 2012-03-21 20:30:32