sobstel/execution

此包已被弃用且不再维护。未建议替代包。

处理无法恢复的致命错误。

维护者

详细信息

github.com/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,他在我们的代码中使用了这个技巧。