PHPカスタムエラー処理

8022 ワード

日常の開発では、ユーザーに直接見せたくないエラー情報があります.このとき、ユーザーが操作中にプログラムで発生したエラー情報をログで記録することができます.
一、カスタムエラー処理クラス:error.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

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

Errorクラスをインスタンス化する場合、コンストラクション関数にBoolタイプの値を入力してエラーメッセージ表示を開くかどうかを選択できます.デフォルトはtrueです.つまり、ページに直接表示され、falseを指定するとログファイルに記録されます.このコードは比較的簡単で、エラーメッセージの表示とエラーメッセージの記録の2つのオプションしか提供されていません.ユーザーは具体的な開発で異なるエラーレベルに対して異なる処理方法を使用することができます.