2011-04-30 42 views
7

我正在尋找一個基於Zend Framework的事件驅動架構的良好實現的參考。你能分享一下你在這個話題上的經驗嗎?Zend框架應用程序中的事件

我已經發現了兩個解決方案,但還沒有使用他們尚未:

編輯:

例子:

回答

4

我沒有這個話題太大的實際經驗,但因爲沒有其他人似乎要回答,我想我會分享什麼,我想這...

這是也許在PHP應用程序中有點棘手,因爲它們通常只在請求期間運行,所以能夠在短期內訂閱和收聽一般事件的好處可能不會很大。

但是,我認爲在允許您更多地分離代碼方面會有一些好處。

從我所知道的情況來看,Symfony調度器看起來更好 - 主要是因爲它看起來更簡單。

我自己使用了一種dojo pubsub類型系統:基本上你有一個事件發佈者,類可以發佈事件。這是一種全局事件處理,你並不特別訂閱這個類本身 - 而是你訂閱一個特定的事件,並且哪個類發佈該事件並不重要。

這與訂閱特定類的好處是代碼更多地分離:在我的情況下,它是一個ZF應用程序,訂閱事件的類可以簡單地在引導中執行,而不必在控制器中進行訂閱(或者創建發佈者的地方)

這種方法的缺點是它可以使事情之間的依賴關係難以跟蹤。例如,你只能看到一個事件發佈調用,但你不知道什麼類型的東西可以在沒有深入代碼的情況下收聽。

在我的情況下,我並不真正知道應用程序是否從使用這種架構中受益 - 事實上,我曾多次考慮徹底刪除它,只是使用直接監聽事件的對象。