天天看點

PHP自定義錯誤處理

在日常的開發中,有些錯誤資訊我們不想讓使用者直接看到,這個時候可以通過日志的方式記錄使用者在操作過程中程式發生的錯誤資訊。

PHP自定義錯誤處理

一、自定義錯誤處理類:error.php

<?php
namespace Core;
class Error
{
    //debug開啟狀态
    protected $debug;

    public function __construct($debug = true)
    {
        $this->debug = $debug;
    }

    public function error()
    {
        error_reporting(0);
        //自定義錯誤處理
        set_error_handler([$this, 'handle'], E_ALL | E_STRICT);
    }

    public function handle($errno, $errmsg, $errfile, $errline)
    {
        date_default_timezone_set("PRC");
        $msg = "時間:[".date("c")."]錯誤級别:[" .$errno . "]錯誤檔案:[" . $errfile . "]錯誤行号:[" . $errline . "]錯誤資訊:[" . $errmsg."]";
        if ($this->debug) {
            echo $msg;
        } else {
            $file = "logs/" . date("Y_m_d") . ".log";
            //記錄錯誤日志到檔案
            error_log($msg . PHP_EOL, 3, $file,null);
        }
        die;
    }

}
           

二、調用:index.php

<?php
use Core\Error;
include "error.php";
(new Error(false))->error();
require ("ankium");
           

在執行個體化Error類的時候,可以給構造函數傳入Bool類型的值選擇是否開啟錯誤消息顯示,預設是true,即直接顯示到頁面,如果指定false則會記錄到日志檔案中。本代碼展示比較簡單,隻提供了顯示錯誤消息和記錄錯誤消息兩個選項,使用者在具體開發中也可以針對不同的錯誤級别使用不同的處理方式!