set_error_handler 函数:
// 设置一个用户定义的错误处理函数,本函数可以用你自己定义的方式来处理运行中的错误;
// 例如,在应用程序中严重错误发生时,或者在特定条件下触发了一个错误(使用 trigger_error()),你需要对数据/文件做清理回收。
set_error_handler('appError');
/**
* 自定义错误处理函数
*
* @param int $error_level 错误级别
* @param string $error_message 错误信息
* @param string $file 发生错误的文件名
* @param int $line 发生错误的行号
*/
function appError($error_level, $error_message, $file, $line)
{
$exit = false;
switch ($error_level) {
//提醒级别
case E_NOTICE:
case E_USER_NOTICE:
$error_type = 'Notice';
break;
//警告级别
case E_WARNING:
case E_USER_WARNING:
$error_type = 'Warning';
break;
//错误级别
case E_ERROR:
case E_PARSE:
case E_CORE_ERROR:
case E_USER_ERROR:
case E_COMPILE_ERROR:
$error_type = 'Fatal Error';
$exit = true;
break;
//其他未知错误
default :
$error_type = 'Unknown';
}
$error = [
'err_type' => $error_type, // 错误类型
'err_str' => $error_message, // 错误信息
'err_file' => $file, // 发生错误的文件名
'err_line' => $line, // 发生错误的行号
];
$exit && exit(json_encode($error));
}
// 注:自定义错误处理函数,必须在项目初始化之前注册好。