我想覆盖默认的 PHP 错误处理程序。我确信这已经实现了无数次。
我找到了以下项目,但大多数项目似乎都很老旧。
我主要想拥有:
- 开发模式,仅显示所有错误/通知
- 生产模式,允许向用户显示干净的自定义布局页面
- 记录到文本文件(我没有对网络服务器的管理员访问权限,因此无法通过 PHP 设置进行设置)
- 发送有关严重错误的警告电子邮件
- 登录到数据库
这怎么能在php中完成?
我想覆盖默认的 PHP 错误处理程序。我确信这已经实现了无数次。
我找到了以下项目,但大多数项目似乎都很老旧。
我主要想拥有:
这怎么能在php中完成?
你可以使用set_error_handler
函数来设置你的自定义错误处理程序,然后用它做任何你想做的事情。
IMO 的最佳做法是ErrorException
在发生错误时抛出并处理它try/catch
(注意:处理我并不是指忽略错误)。例如:
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, $errno, 0, $errfile, $errline);
}
set_error_handler("exception_error_handler");
try {
//Some code that may produce error
} catch (ErrorException $e) {
$someLogger->log($e->getMessage());
}
您可能拥有自己的自定义类来实现您的要求,而不是 logger。因此,如果任何现有资源满足您的需求,请使用一个,否则创建。
注意#1:如果你想对致命错误做一些事情(我想到了日志记录),你可以使用register_shutdown_function
注意#2:您说您找到的课程/项目很小。有两件事。首先,您无法衡量使用 LOC 的代码有多好。其次,与错误没有太大关系。
编辑:
一般来说,在开发新项目时,从头开始重新实现所有内容是不常见的,甚至是不可接受的。您应该构建自己的库一次,然后在您的项目中使用它们。就个人而言,我使用KLogger来记录东西,我对此很满意。