2012-08-09 92 views
1

FYI我剛開始使用的Symfony,隨着中說...什麼好處會有使用監聽器的服務,而不是服務

什麼好處會有使用監聽器的服務,而不是服務?

縱觀我看我可以使用監聽器作爲一個服務文檔:

但我也可以使用事件調度:

獲得相同的功能,或者我錯過了什麼?

我正在做的是創建一個服務,偵聽自定義事件,我有點困惑,我應該採取上述方案的路線。我已經看到了關於每個設置的一些帖子,但沒有比較兩者和差異。

感謝任何見解

回答

2

在簡而言之,Symfony應用程序中的事件與JavaScript中的事件相似:不是監聽大部分與UI相關的事件(例如鼠標點擊,懸停等),而是在應用程序中監聽任意事件(例如獲取拋出異常,發送,用戶被創建等)。

EventDispatcher圍繞observer模式構建。對於任何發生的事件,調度員通知所有註冊的聽衆關於該事件。當然,您可以從服務容器中檢索調度程序並手動註冊偵聽器,但這不允許我們事先收聽事件。更糟糕的是,聽衆只能在該控制器操作中註冊。

通過將偵聽器配置爲服務,您實質上是讓框架自己完成註冊過程。如果你看看app/cache/dev/appDevDebugContainer.php(可能有點不同的名字,把它寫在我頭上)並搜索event_dispatcher,你應該能夠看到事件是如何被自動註冊的。

0

正如其名,甚至監聽「監聽」事件,而事件調度「出動」(發送)他們。

如果希望聽聽自定義事件(您創建即event)服務,那麼你就必須同時創建一個事件調度發送的事件和甚至聽衆聽他們

+0

是的,但「Listener as a Service」的文檔看起來還包括Listener本身的服務功能,而不是調用服務。或者我錯過了什麼 – 2012-08-09 13:45:09

+0

聽衆是這種情況下的服務 – 2012-08-09 13:47:09

+1

是的我得到這個,我的問題是爲什麼我會通過調用服務類中的服務來做到這一點?這樣做有一些好處嗎? – 2012-08-09 13:55:33

相關問題