mekras / bedoved
易于错误处理
v1.3.0
2014-04-25 05:57 UTC
Requires
- php: >=5.1.0
Requires (Dev)
- ext-xdebug: *
- satooshi/php-coveralls: dev-master
This package is auto-updated.
Last update: 2024-08-29 04:14:22 UTC
README
Бедовед — библиотека для перехвата и обработки ошибок, в том числе фатальных.
允许
- 捕获和处理致命错误;
- 将错误转换为基于指定掩码的异常;
- 在出现错误或异常时发送电子邮件通知;
- 在出现错误或异常时输出指定文件的文本内容,而不是标准错误信息或异常信息;
- 输出有关错误的详细调试信息。
使用示例
require 'Bedoved.php'; $bedoved = new Bedoved() // Включить превращение ошибок в исключительные ситуации $bedoved->enableErrorConversion(); // Включить перехват исключений, не перехваченных приложением $bedoved->enableExceptionHandling(); // Включить перехват фатальных ошибок $bedoved->enableFatalErrorHandling(); // Включить отправку извещений об ошибках по e-mail $bedoved->setNotifyEmails('admin@example.org'); // При возникновении ошибки показывать этот файл $bedoved->setMessageFile('/path/to/file.html');
捕获和处理致命错误
PHP没有标准方法来捕获某些类型错误(例如E_PARSE或E_ERROR),但是有一个方法 — 通过注册函数使用 ob_start。在CLI模式下不工作。
通过调用方法 enableFatalErrorHandling
启用Bedoved的致命错误捕获。可以使用方法 setFatalErrorHandler
设置自己的处理器。
<?php require 'Bedoved.php'; $bedoved = new Bedoved(); $bedoved->enableFatalErrorHandling(); $bedoved->setFatalErrorHandler( /** * Ваш обработчик ошибок * * Чтобы вывести что-нибудь в браузер используйте return. * * @param ErrorException $e исключение, содержащее информацию об ошибке * @param string $output фрагмент вывода, где обнаружено сообщение об ошибке * * @return string вывод для браузера */ function (ErrorException $e, $output) { return 'ERROR: ' . $e->getMessage(); } ); $x = new Foo;
将错误转换为异常
<?php require 'Bedoved.php'; $bedoved = new Bedoved(); $bedoved->enableErrorConversion(); try { $x = 1 / 0; } catch (ErrorException $e) { echo 'ERROR: ' . $e->getMessage() . PHP_EOL; }
错误预定义操作
不需要编写自己的错误处理器,可以使用Bedoved中预定义的操作:发送电子邮件通知和显示文件。
$bedoved = new Bedoved(); $bedoved ->enableErrorConversion() ->enableExceptionHandling() ->enableFatalErrorHandling() ->setNotifyEmails('admin@example.org') ->setMessageFile('/path/to/file.html');
setNotifyEmails
方法允许设置一个电子邮件地址列表(用逗号分隔),当出现错误时,错误信息将发送到这些地址。信息中包含错误文本、错误发生位置、调用栈、请求的URI、请求的主机和用户代理。信息的主题包含网站的域名(来自 $_SERVER['HTTP_HOST']
)或由 php_uname('n')
返回的服务器名。
setMessageFile
方法允许设置一个文件,当出现错误时将显示该文件的文本内容。
调试模式
在1.2.0版本中添加了调试模式,在该模式下
- 不发送电子邮件;
- 忽略通过
setMessageFile()
设置的输出; - 在浏览器中输出有关错误的详细信息。
要启用调试模式,需要将构造函数的第一个参数传递为 true
。
$bedoved = new Bedoved(true);
注意事项
- 内置错误处理器总是通过调用函数 error_log 将捕获的错误和异常写入日志。
- 如果错误发生时HTTP头还未发送,将发送一个500状态码的头。
- 启用致命错误捕获将禁用错误信息的HTML格式,并添加一个唯一的标记。