W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
作用:添加 Api Hook
回調(diào)函數(shù)。
語法:?null?add_hook(mixed?$api,?callable?$callback[,?boolean?$apiIsSet])
參數(shù):
$api
設(shè)置 API 名稱,使用點語法,如 user.add,也可以設(shè)置為一個索引數(shù)組同時為多個 API 添加同一個回調(diào)函數(shù)。$callback
回調(diào)函數(shù),可以是一個函數(shù)名,也可以是一個匿名函數(shù)。$apiIsSet
該 API 是否為一個集合,默認(rèn)為 true,即同一個 API 中存儲多個回調(diào)函數(shù)(數(shù)組),如果設(shè)置為 false,則該 API 僅存儲 $callback 一個回調(diào)函數(shù)
別名:
add_action()
說明:
$callback
?回掉函數(shù)支持最多一個參數(shù),這個參數(shù)同時也是?do_hooks()?函數(shù)的第二個參數(shù),在函數(shù)中可以對這個參數(shù)就行判斷,修改等,最后將其返回或不反回(返回 null),甚至返回其他內(nèi)容(但要求類型和這個參數(shù)相同)。
如果返回值既不是 null 也不是return error() ,則返回值會應(yīng)用到?do_hooks() 函數(shù)的第二個參數(shù)上,來實現(xiàn)更改請求參數(shù)。
如果設(shè)置了 $apiIsSet 參數(shù)為 false,那么 return error() 也會被應(yīng)用到 do_hooks() 函數(shù)的第二個參數(shù)上。
在回調(diào)函數(shù)中,可以通過判斷請求參數(shù),來決定接下來的行為,比如當(dāng)請求參數(shù)不存在或者不匹配時,可以使用return error() 來返回錯誤信息。
影響模塊操作中的回調(diào)函數(shù),其參數(shù)永遠(yuǎn)是提交的參數(shù)構(gòu)成的數(shù)組或者獲取模塊記錄而返回的數(shù)組,參見《掛鉤概述》。
示例:
<?php
add_hook('user.add', function($user){
$user['user_avatar'] = template_url('avatar.png'); //為用戶設(shè)置一個默認(rèn)頭像
return $user; //將 $user 返回,必需,不返回不會應(yīng)用修改
});
/** 或者為 Api 設(shè)置一個名字 */
add_action('user.add.auto_avatar', function($user){
/** 代碼 */
}, false); //此時需要將第三個參數(shù)設(shè)置為 fasle
/** 或者使用一個函數(shù)名做為回調(diào)函數(shù) */
add_action('user.add', 'auto_avatar'); //此時不能將第三個參數(shù)設(shè)置為 false,因為 user.add 是一個系統(tǒng)預(yù)定的集合
function auto_avatar($user){
/** 代碼 */
}
/** 使用 return error() 返回錯誤 */
add_action('user.update.check_login', function(){
if(!is_login()) return error('用戶未登錄,不允許操作。');
}, false);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: