W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
作用:設(shè)置出錯信息并返回失敗的操作結(jié)果。
語法:?array?error([mixed?$data][,?array?$extra])
參數(shù):
$data
操作失敗的提示信息或結(jié)果,也可設(shè)置未 null
或false
用以清除錯誤信息。$extra
??額外附加的信息
返回值:
如果設(shè)置了 $data
參數(shù),則返回結(jié)果數(shù)組并至少包含兩個鍵值對 [success]=>ture
, [data]=>$data
。
如果沒有提供參數(shù),則返回已設(shè)置的錯誤信息。
說明:
該函數(shù)既可以用在類方法中,也可以用在 Api Hook
回調(diào)函數(shù)中,它比 success()
函數(shù)具有更多靈活性和使用場景。
由于 ModPHP 程序需要同時兼顧 HTTP 和 Socket 服務(wù)器,所以模塊類方法調(diào)用過程中不能出現(xiàn)使腳本停止運行的情況,所以使用 exit()
輸出錯誤信息并結(jié)束程序是不可取的。
為此,ModPHP 設(shè)計了一種預(yù)設(shè)置錯誤信息的方式。例如,在 Api Hook 回調(diào)函數(shù)中,如果某一個函數(shù)觸發(fā)了 error()
函數(shù)并設(shè)置錯誤信息,那么在函數(shù)序列中的其他回調(diào)函數(shù)將不會再被觸發(fā)。而 error()
函數(shù)也將一直保持被設(shè)置的錯誤信息。如果你自己定義的函數(shù)或類方法需要實現(xiàn)這樣的效果,也應(yīng)該使用這種方式跳過執(zhí)行。
在模塊類方法中,在調(diào)用?do_hooks()?函數(shù)或者其他可能設(shè)置錯誤信息的程序之后,你必須使用if(error()) return error();
的方式,判斷在存在錯誤的情況下,將錯誤返回給調(diào)用器而不再執(zhí)行后面的代碼。
某些時候,你可能需要使用?error(null);
?來將已經(jīng)設(shè)置的錯誤信息清除,以防止它阻礙程序的繼續(xù)運行。例如,當(dāng)你在程序中使用了形如{module}::get()
方法來獲取數(shù)據(jù)時,如果數(shù)據(jù)不存在,那么error()
將存儲著錯誤信息。如果你后面還需要運行其他的嗎,則必須要先使用 error(null)
來清除錯誤信息。
示例:
<?php
add_action('post.like', function($arg){ //為類動態(tài)添加一個 LIKE 方法
do_hooks('post.like', $arg); //調(diào)用 Api Hook
if(error()) return error(); //如果 Api Hook 回調(diào)函數(shù)報告了錯誤,則將錯誤返回給調(diào)用器
if( 條件 ){
/** 需要執(zhí)行的代碼 */
return success('頂贊成功。');
}else{
return error('點贊失敗。');
}
});
/** 或者在類中:*/
final class post extends mod{
static function like($arg){
do_hooks('post.like', $arg);
if(error()) return error();
if( 條件 ){
/** 需要執(zhí)行的代碼 */
return success('頂贊成功。');
}else{
return error('點贊失敗。');
}
}
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: