W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
作用:執(zhí)行 Api Hook
回調(diào)函數(shù)。
語(yǔ)法:?null?do_hooks(string?$api[,?mixed?$input])
參數(shù):
$api
待執(zhí)行的 API 名稱,使用點(diǎn)語(yǔ)法,如 user.add
$input
傳入的參數(shù)或者獲取模塊信息時(shí)得到的數(shù)組別名:
do_actions()
說(shuō)明:
$input
參數(shù)是 Api Hook
回調(diào)函數(shù)的參數(shù)。在使用?add_hook()?函數(shù)為 API
添加回調(diào)函數(shù)時(shí),回調(diào)函數(shù)可以選擇傳入 $input
參數(shù),也可以不傳入?yún)?shù),可以選擇返回值,也可以不返回。$input
參數(shù)是一個(gè)引用傳遞,默認(rèn)值為 null
。但除了 null
外,其他返回值都會(huì)被應(yīng)用到 $input
參數(shù)中,等待下一個(gè)回調(diào)函數(shù)接收它。
需要注意的是,如果在某一個(gè) Api Hook
回調(diào)函數(shù)中,return error()
被調(diào)用,即設(shè)置了錯(cuò)誤信息,那么序列中的其他回調(diào)函數(shù)將不會(huì)再被調(diào)用。ModPHP
不會(huì)也沒(méi)有能力(在顧及 Socket
服務(wù)時(shí))自動(dòng)報(bào)告錯(cuò)誤消息給調(diào)用器,你需要手動(dòng)這么做。
在模塊類方法中調(diào)用了 do_hooks()
函數(shù)后,你需要使用if(error()) return?[error()](http://modphp.hyurl.com/function-error);
來(lái)判斷在出現(xiàn)錯(cuò)誤時(shí)將錯(cuò)誤返回給調(diào)用器。
示例:
<?php
/** 自定義一個(gè) Api 并綁定回調(diào)函數(shù) */
add_hook('text.change', function($text){ //此時(shí)傳入 $text 參數(shù)和不傳入是一樣的
$text = 'Hi, ModPHP';
return $text; //返回以應(yīng)用更改
}, false);
$text = 'Hello, World!'; //這個(gè) $text 和 add_hook() 中的 $text 不是一回事
do_hooks('test.change', $text); //執(zhí)行回調(diào)函數(shù)
echo $text; //將輸出 Hi, ModPHP
/** 錯(cuò)誤控制 */
class something extents mod{
static function act($arg = array()){
do_hooks('mod.act', $arg); //可能會(huì)出現(xiàn)錯(cuò)誤,錯(cuò)誤信息存儲(chǔ)在 error() 中
if(error()) return error(); //如果 error() 返回值不為空(有錯(cuò)誤),則將錯(cuò)誤返回給調(diào)用器
/** 其他代碼 */
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: