簡體   English   中英

帶有事件或掛鈎的插件系統?

[英]Plugin system with events or hooks?

我已經為php中的軟件創建了一個插件系統。 為了使插件改變程序的行為,我編寫了以下(簡化)代碼:

class PluginController {

  /* ... */

  public function addHook($name, $function, $priority = 10) {
    /* store the function callback $function  associated with $name */
  }

  public function executeHook($name, $args = array()) {
    /* execute all function callbacks associated with $name
     * in order of their priority and return their results */    
  }
}

因此,插件可以使用addHook添加回調,而在應用程序中的某個位置,這些回調可以通過調用executeHook來執行。

這很好用,但是在閱讀了有關該主題的一段時間后,我仍然不確定該技術是事件系統還是掛鈎系統。

一些消息人士說,差異與松散和緊密耦合有關。 其他人則說鈎子有返回值,而事件沒有。 還有人再次說,事件是針對手工異步活動的,並且僅在某個時刻插入代碼即可。

再說一遍,上面的代碼是關於事件鈎子的 ,有人可以解釋其中的區別嗎?

您的代碼更像是一個事件。

掛鈎允許插件與調用它的代碼進行交互。 在假定將返回數據的情況下調用它們,並且原始代碼通常會在調用該掛鈎之后立即遍歷返回的數據。

另一方面, 事件僅在發生特定操作時才被宣布。 他們為插件提供了在那時運行自己的事件處理邏輯的機會,而不會以任何方式直接影響原始代碼。

資源

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM