do_hooks()

2018-06-13 17:19 更新

作用:執(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)用器
        /** 其他代碼 */
    }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)