可能重複:
Zend Framework: Controller Plugins vs Action Helpers前控制器插件和動作助手之間的區別是什麼?
我知道其中的差別是什麼技術,以及如何註冊一個前端控制器插件/動作助手,但如果有人有更多這將真正幫助我在Zend框架中的經驗可以解釋爲什麼這兩種不同的用例(例子會很棒)。
我還是要學習很多與Zend框架的工作時,我想這可能使事情變得更加容易,當我知道時使用的動作助手而不是一個前端控制器插件,反之亦然。
謝謝!
可能重複:
Zend Framework: Controller Plugins vs Action Helpers前控制器插件和動作助手之間的區別是什麼?
我知道其中的差別是什麼技術,以及如何註冊一個前端控制器插件/動作助手,但如果有人有更多這將真正幫助我在Zend框架中的經驗可以解釋爲什麼這兩種不同的用例(例子會很棒)。
我還是要學習很多與Zend框架的工作時,我想這可能使事情變得更加容易,當我知道時使用的動作助手而不是一個前端控制器插件,反之亦然。
謝謝!
前端控制器插件執行用於每個請求,在MVC週期特定階段。您可以使用它來執行工作,如檢查用戶是否已通過身份驗證或將請求記錄到數據庫以進行分析。
控制器動作助手還可以執行在MVC週期的不同階段,儘管這不是強制性的。插件和動作助手之間的主要區別在於你的控制器可以與動作助手交互以改變他們的行爲,或者使用一些按需功能。
插件通常更適合總是需要發生的事情,而動作助手對偶爾的任務很有用,例如發送JSON響應。
的控制器/幫手掛鉤一個例子:
你有一個動作助手來檢查在preDispatch用戶是否登錄,如果沒有,問到登錄的用戶在登錄控制器,你想要的。這個規則的例外,否則你將無限循環。在登錄控制器的init方法,你可以做到以下幾點,因爲在init()被調用之前preDispatch:
public function init() {
$this->_helper->myHelper->setAuthenticationRequired(false);
}
這將設置一個布爾的助手跳過認證檢查。
一個偉大的ressource是這樣的UML圖:http://www.kitpages.fr/cms/site/tutoriaux/sequence_globale.jpg
你可以看到Plugins
和調用,那麼Helpers
,和黃色區域是調度循環。
不要忘了Helpers
掛鉤(#17和#22)不會被觸發如果助手沒有被調用/使用,這是偉大的,可以節省您的時間,未使用的過程中不會需要初始化。
我主要使用:
Plugins
重邏輯所需項目範圍(如身份認證,ACL,...),Helpers
對於大多數特定任務靠近action
(如在許多動作