add_hook()

2018-06-13 17:13 更新

作用:添加 Api Hook 回調(diào)函數(shù)。 語(yǔ)法?null?add_hook(mixed?$api,?callable?$callback[,?boolean?$apiIsSet])

參數(shù)

  • $api 設(shè)置 API 名稱,使用點(diǎn)語(yǔ)法,如 user.add,也可以設(shè)置為一個(gè)索引數(shù)組同時(shí)為多個(gè) API 添加同一個(gè)回調(diào)函數(shù)。
  • $callback 回調(diào)函數(shù),可以是一個(gè)函數(shù)名,也可以是一個(gè)匿名函數(shù)。
  • $apiIsSet 該 API 是否為一個(gè)集合,默認(rèn)為 true,即同一個(gè) API 中存儲(chǔ)多個(gè)回調(diào)函數(shù)(數(shù)組),如果設(shè)置為 false,則該 API 僅存儲(chǔ) $callback 一個(gè)回調(diào)函數(shù)

別名add_action()

說(shuō)明$callback?回掉函數(shù)支持最多一個(gè)參數(shù),這個(gè)參數(shù)同時(shí)也是?do_hooks()?函數(shù)的第二個(gè)參數(shù),在函數(shù)中可以對(duì)這個(gè)參數(shù)就行判斷,修改等,最后將其返回或不反回(返回 null),甚至返回其他內(nèi)容(但要求類型和這個(gè)參數(shù)相同)。

如果返回值既不是 null 也不是return error() ,則返回值會(huì)應(yīng)用到?do_hooks() 函數(shù)的第二個(gè)參數(shù)上,來(lái)實(shí)現(xiàn)更改請(qǐng)求參數(shù)。

如果設(shè)置了 $apiIsSet 參數(shù)為 false,那么 return error() 也會(huì)被應(yīng)用到 do_hooks() 函數(shù)的第二個(gè)參數(shù)上。

在回調(diào)函數(shù)中,可以通過(guò)判斷請(qǐng)求參數(shù),來(lái)決定接下來(lái)的行為,比如當(dāng)請(qǐng)求參數(shù)不存在或者不匹配時(shí),可以使用return error() 來(lái)返回錯(cuò)誤信息。

影響模塊操作中的回調(diào)函數(shù),其參數(shù)永遠(yuǎn)是提交的參數(shù)構(gòu)成的數(shù)組或者獲取模塊記錄而返回的數(shù)組,參見(jiàn)《掛鉤概述》。

示例

<?php
add_hook('user.add', function($user){
    $user['user_avatar'] = template_url('avatar.png'); //為用戶設(shè)置一個(gè)默認(rèn)頭像
    return $user; //將 $user 返回,必需,不返回不會(huì)應(yīng)用修改
});
/** 或者為 Api 設(shè)置一個(gè)名字 */
add_action('user.add.auto_avatar', function($user){
    /** 代碼 */
}, false); //此時(shí)需要將第三個(gè)參數(shù)設(shè)置為 fasle
/** 或者使用一個(gè)函數(shù)名做為回調(diào)函數(shù) */
add_action('user.add', 'auto_avatar'); //此時(shí)不能將第三個(gè)參數(shù)設(shè)置為 false,因?yàn)?user.add 是一個(gè)系統(tǒng)預(yù)定的集合
function auto_avatar($user){
    /** 代碼 */
}
/** 使用 return error() 返回錯(cuò)誤 */
add_action('user.update.check_login', function(){
    if(!is_login()) return error('用戶未登錄,不允許操作。');
}, false);
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)