W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
作用:執(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() 返回值不為空(有錯誤),則將錯誤返回給調用器
/** 其他代碼 */
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯系方式:
更多建議: