add_hook()

2018-06-13 17:13 更新

作用:添加 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);
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號