error()

2018-06-13 17:58 更新

作用:設(shè)置出錯(cuò)信息并返回失敗的操作結(jié)果。 語(yǔ)法:?array?error([mixed?$data][,?array?$extra])

參數(shù)

  • $data 操作失敗的提示信息或結(jié)果,也可設(shè)置未 nullfalse 用以清除錯(cuò)誤信息。
  • $extra??額外附加的信息

返回值: 如果設(shè)置了 $data 參數(shù),則返回結(jié)果數(shù)組并至少包含兩個(gè)鍵值對(duì) [success]=>ture, [data]=>$data。 如果沒(méi)有提供參數(shù),則返回已設(shè)置的錯(cuò)誤信息。

說(shuō)明: 該函數(shù)既可以用在類方法中,也可以用在 Api Hook 回調(diào)函數(shù)中,它比 success() 函數(shù)具有更多靈活性和使用場(chǎng)景。 由于 ModPHP 程序需要同時(shí)兼顧 HTTP 和 Socket 服務(wù)器,所以模塊類方法調(diào)用過(guò)程中不能出現(xiàn)使腳本停止運(yùn)行的情況,所以使用 exit() 輸出錯(cuò)誤信息并結(jié)束程序是不可取的。

為此,ModPHP 設(shè)計(jì)了一種預(yù)設(shè)置錯(cuò)誤信息的方式。例如,在 Api Hook 回調(diào)函數(shù)中,如果某一個(gè)函數(shù)觸發(fā)了 error() 函數(shù)并設(shè)置錯(cuò)誤信息,那么在函數(shù)序列中的其他回調(diào)函數(shù)將不會(huì)再被觸發(fā)。而 error() 函數(shù)也將一直保持被設(shè)置的錯(cuò)誤信息。如果你自己定義的函數(shù)或類方法需要實(shí)現(xiàn)這樣的效果,也應(yīng)該使用這種方式跳過(guò)執(zhí)行。

在模塊類方法中,在調(diào)用?do_hooks()?函數(shù)或者其他可能設(shè)置錯(cuò)誤信息的程序之后,你必須使用if(error()) return error(); 的方式,判斷在存在錯(cuò)誤的情況下,將錯(cuò)誤返回給調(diào)用器而不再執(zhí)行后面的代碼。

某些時(shí)候,你可能需要使用?error(null);?來(lái)將已經(jīng)設(shè)置的錯(cuò)誤信息清除,以防止它阻礙程序的繼續(xù)運(yùn)行。例如,當(dāng)你在程序中使用了形如{module}::get()方法來(lái)獲取數(shù)據(jù)時(shí),如果數(shù)據(jù)不存在,那么error() 將存儲(chǔ)著錯(cuò)誤信息。如果你后面還需要運(yùn)行其他的嗎,則必須要先使用 error(null) 來(lái)清除錯(cuò)誤信息。

示例

<?php
add_action('post.like', function($arg){ //為類動(dòng)態(tài)添加一個(gè) LIKE 方法
    do_hooks('post.like', $arg); //調(diào)用 Api Hook
    if(error()) return error(); //如果 Api Hook 回調(diào)函數(shù)報(bào)告了錯(cuò)誤,則將錯(cuò)誤返回給調(diào)用器
    if( 條件 ){
        /** 需要執(zhí)行的代碼 */
        return success('頂贊成功。');
    }else{
        return error('點(diǎn)贊失敗。');
    }
});
/** 或者在類中:*/
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('點(diǎn)贊失敗。');
        }
    }
}
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

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

編程獅公眾號(hào)