php的錯誤處理封裝類詳解

來源:互聯網
上載者:User
本文主要和大家介紹了php實現的錯誤處理封裝類,結合具體執行個體形式分析了php錯誤判斷、提示及日誌相關操作技巧,需要的朋友可以參考下,希望能協助到大家。

1、建立MyErrorHandler.php檔案

代碼如下:


<?phpclass MyErrorHandler {  public $message;  public $filename;  public $line;  public $vars = array();  protected $_noticeLog = 'F:\root\noticeLog.log';  public function __construct ($message,$filename,$line,$vars) {    $this->message = $message;    $this->filename = $filename;    $this->line = $line;    $this->vars = $vars;  }  public static function deal ($errno,$errmsg,$filename,$line,$vars) {    $self = new self($errno,$errmsg,$filename,$line,$vars);    switch ($errno) {      case E_USER_ERROR:        return $self->dealError();        break;      case E_USER_WARNING:      case E_WARNING:        return $self->dealWarning();        break;      case E_NOTICE:      case E_USER_NOTICE:        return $self->dealNotice();      default:        return false;    }  }  /**  * 致命的錯誤  */  public function dealError() {    ob_start();    debug_print_backtrace();    $backtrace = ob_get_flush();    $errorMsg = <<<EOF出現了致命的錯誤,如下:產生錯誤的檔案:{$this->filename}產生錯誤的資訊:{$this->message}產生錯誤的行號:{$this->line}追蹤資訊{$backtrace}EOF;    error_log($errorMsg,1,'279921301@qq.com','From:php[error錯誤記錄檔]');    exit(1);  }  /**  * 警告的錯誤  */  public function dealWarning() {    $errorMsg = <<<EOF出現了警告的錯誤,如下:產生警告的檔案:{$this->filename}產生警告的資訊:{$this->message}產生警告的行號:{$this->line}EOF;    return error_log($errorMsg,1,'279921301@qq.com','From:php[error警告日誌]');  }  /**  * 通知的錯誤  */  public function dealNotice() {    $datetime = date('Y-m-d H:i:s');    $errorMsg = <<<EOF出現了通知的錯誤,如下:產生通知的檔案:{$this->filename}產生通知的資訊:{$this->message}產生通知的行號:{$this->line}產生通知的時間:{$datetime}EOF;    return error_log($errorMsg,3,$this->_noticeLog);  }}

2、測試代碼


<?phpinclude "MyErrorHandler.php";//報告所有 PHP 錯誤error_reporting(-1);//不顯示錯誤資訊ini_set('display_errors',0);set_error_handler(array('MyErrorHandler','deal'));echo $test; //Notice錯誤settype($var,'test'); //警告錯誤test();

注意:發送郵件需要在本地配置mail函數,可以參考前文《PHP實現在windows下配置sendmail並通過mail()函數發送郵件的方法》。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.