sobstel / execution
此包已被弃用且不再维护。未建议替代包。
处理无法恢复的致命错误。
此包尚未发布版本,信息较少。
README
简介
当您的Web应用程序出现问题时,您不希望您的访客看到“致命错误”消息。相反,您希望能够向他们展示一个更友好的页面,告诉他们可能出了什么问题或他们遇到此类错误时应做什么。
PHP中的致命错误会终止您的脚本,但使用这个库,您可以向PHP的关闭系统添加钩子。这允许您显示更用户友好的错误消息。
要求
PHP 5.3+
类加载
可以通过包含 Execution.php 文件来加载库,它也兼容 psr0。
// plain old require_once
require_once 'src/Execution/Execution.php';
// symfony2 autoloader
$loader = new \Symfony\Component\ClassLoader\UniversalClassLoader();
$loader->registerNamespaces(array(
'Execution' => 'vendor/Execution/src',
));
$loader->register();
用法
调用 Execution\Execution::setErrorHandler($callback) 进行初始化。$callback 是任何有效的回调(数组、字符串、闭包、可调用对象)。setErrorHandler 在PHP中注册必要的处理程序。
回调应期望一个参数,它是一个具有以下键的关联数组
[type] => 1
[message] => Call to undefined function a()
[file] => /var/www/app/index.php
[line] => 12
示例回调
$callback = function($error) {
$message = $error['message'];
echo "This application did not succesfully finish its request. ".
"The reason was:\n$message\n\n";
}
Execution\Execution::setErrorHandler($callback);
库使用 register_shutdown_function() 允许捕获致命错误。
测试
只需键入 phpunit tests
即可运行所有测试。
致谢
版本 1.0 是 ezComponents 的 ezcExecution 包的衍生品,最初由 Sergey Alexeev、Sebastian Bergmannm、Jan Borsodim、Raymond Bosman、Frederik Holljen、Kore Nordmann、Derick Rethans、Vadym Savchuk、Tobias Schlitt 和 Alexandru Stanoi 开发。
与原始 ezcComponent 相比,有重大改进
- 您可以传递任何回调,包括闭包和可调用对象(如果它们实现了 __invoke() 方法),
- 精简和简化,
- 重写测试(100% 代码覆盖率)。
版本 2.0 是从零开始重写的,考虑到了更多的简洁性。功劳归我的同事 Paul Kamer,他在我们的代码中使用了这个技巧。