7

我需要一個事件調度員在我自己的代碼庫(自定義PHP庫)集成,所以我看着什麼都Symfony2Zend Framework 2在做什麼。將事件分派器集成到PHP庫中的最佳方式是什麼?

很明顯,沒有用於調度事件的共享接口,因爲兩個框架都有不同的需求並決定實現自己的代碼......所以我有點失落:我不想重新發明我的私人車輪。

可能實現觀察者模式的SPL接口是有點幼稚,所以我在這裏問你:你會做什麼?

編輯

因爲它是不明確的。我想重新使用現有的ED,讓開發人員在我的圖書館注入它。

假設您使用調度程序開發庫,並且您知道您的庫將成爲Symfony Bundle的一部分,並在ZF項目中重新使用:您當然希望重新使用Symfony和ZF調度程序,而不是你自己。

所以我一直在尋找在主流庫中執行現有的調度員共享接口,但聽起來像有沒有解決方案。

回答

4

你可以定義你的需求的接口的文章,然後與每個框架型動物適配器實現它。

+0

跛,但現在唯一的選擇:) – odino

+0

@odino爲什麼不開始另一個PSR比較Symfony2,ZF2,Aura,Fuel ...和其他人...無論如何不知道它會被接受與否。可能只有基礎接口才適用。 –

2

我認爲你的第一個直覺是選擇一個廣泛使用的組件是要走的路。

這兩個是我將考慮的選項。你應該簡單地看看他們兩個,並選擇一個你認爲最適合你的人。

無恥插頭:如果你想獲得真正的,很輕的,你可以看看Événement

2

您需要通過實現PHP接口SplObserver,SplSubject實現觀察者模式。 Symphony不僅僅支持鉤子,而且通常每個事件調度器都通過實現觀察者模式以這種方式工作。

這裏瞭解更多http://devzone.zend.com/article/4284

+1

OSL嗨,看看編輯,問題的關鍵不在於使用哪種模式,很明顯,你NEDD去與觀察者;-) – odino

1

已經被接受,但也爲那些遇到這是我在EDP一滴溶液在PHP解決舊的文章。

http://prggmr.org

的功能比的Symfony的和Zend的執行多少不同,因爲他們是沒有任何接口或需要延長使用庫類,而您只需撥打典型的PHP函數來處理該事件的調度。

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

// Dispatch an event 
fire(signal) 
相關問題