PHPカスタムエラー処理
8022 ワード
日常の開発では、ユーザーに直接見せたくないエラー情報があります.このとき、ユーザーが操作中にプログラムで発生したエラー情報をログで記録することができます.
一、カスタムエラー処理クラス:error.php
二、呼び出し:index.php
Errorクラスをインスタンス化する場合、コンストラクション関数にBoolタイプの値を入力してエラーメッセージ表示を開くかどうかを選択できます.デフォルトはtrueです.つまり、ページに直接表示され、falseを指定するとログファイルに記録されます.このコードは比較的簡単で、エラーメッセージの表示とエラーメッセージの記録の2つのオプションしか提供されていません.ユーザーは具体的な開発で異なるエラーレベルに対して異なる処理方法を使用することができます.
一、カスタムエラー処理クラス: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つのオプションしか提供されていません.ユーザーは具体的な開発で異なるエラーレベルに対して異なる処理方法を使用することができます.