error()

2018-06-13 17:58 更新

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

參數(shù)

  • $data 操作失敗的提示信息或結(jié)果,也可設(shè)置未 nullfalse 用以清除錯誤信息。
  • $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('點贊失敗。');
        }
    }
}
以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號