do_hooks()

2018-06-13 17:19 更新

作用:執(zhí)行 Api Hook 回調函數。 語法:?null?do_hooks(string?$api[,?mixed?$input])

參數

  • $api 待執(zhí)行的 API 名稱,使用點語法,如 user.add
  • $input 傳入的參數或者獲取模塊信息時得到的數組

別名

  • do_actions()

說明$input 參數是 Api Hook 回調函數的參數。在使用?add_hook()?函數為 API 添加回調函數時,回調函數可以選擇傳入 $input 參數,也可以不傳入參數,可以選擇返回值,也可以不返回。$input 參數是一個引用傳遞,默認值為 null。但除了 null 外,其他返回值都會被應用到 $input 參數中,等待下一個回調函數接收它。

需要注意的是,如果在某一個 Api Hook 回調函數中,return error() 被調用,即設置了錯誤信息,那么序列中的其他回調函數將不會再被調用。ModPHP 不會也沒有能力(在顧及 Socket 服務時)自動報告錯誤消息給調用器,你需要手動這么做。

在模塊類方法中調用了 do_hooks() 函數后,你需要使用if(error()) return?[error()](http://modphp.hyurl.com/function-error); 來判斷在出現錯誤時將錯誤返回給調用器。

示例

<?php
/** 自定義一個 Api 并綁定回調函數 */
add_hook('text.change', function($text){ //此時傳入 $text 參數和不傳入是一樣的
    $text = 'Hi, ModPHP';
    return $text; //返回以應用更改
}, false);
$text  = 'Hello, World!'; //這個 $text 和 add_hook() 中的 $text 不是一回事
do_hooks('test.change', $text); //執(zhí)行回調函數
echo $text; //將輸出 Hi, ModPHP
/** 錯誤控制 */
class something extents mod{
    static function act($arg = array()){
        do_hooks('mod.act', $arg); //可能會出現錯誤,錯誤信息存儲在 error() 中
        if(error()) return error(); //如果 error() 返回值不為空(有錯誤),則將錯誤返回給調用器
        /** 其他代碼 */
    }
}
以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號