designcise/bitframe-whoops

Whoops错误处理器中间件

v4.0.0 2023-07-01 23:51 UTC

This package is auto-updated.

Last update: 2024-09-30 01:35:39 UTC


README

CI Maintainability Test Coverage

Whoops错误处理器中间件用于处理应用程序或中间件特定的错误。

安装

$ composer require "designcise/bitframe-whoops"

请注意,此包需要PHP 8.2.0或更高版本。

快速入门

实例化

构造函数有以下签名

new ErrorHandler(
    ResponseFactoryInterface,
    HandlerProviderNegotiator::class,
    [options],
);
  1. 构造函数的第一个参数必须是Psr\Http\Message\ResponseFactoryInterface的实例;
  2. 构造函数的第二个参数必须是\BitFrame\Whoops\Provider\ProviderInterface的实现;
  3. 构造函数的第三个参数是可选的选项数组,用于指定以下内容
    1. catchGlobalErrors:当设置为true时,错误将在当前中间件集合之外处理。
    2. 其他选项只是Whoops\Handler\*Handler.phpBitFrame\Whoops\Handler\*Handler.php中的方法名称。例如,要设置Whoops\Handler\JsonResponseHandler::setJsonApi(),您需要传递:['setJsonApi' => false]等。

作为一个快捷方式,您还可以使用静态方法ErrorHandler::fromNegotiator($factory, $options)。这将默认使用\BitFrame\Whoops\Provider\HandlerProviderNegotiator

如何运行中间件

要运行中间件,只需将BitFrame\Whoops\ErrorHandler实例传递给您的中间件运行器/分发器。

例如,要使用BitFrame\App(或其他PSR-15分发器)处理中间件特定错误,它看起来像这样

use BitFrame\App;
use BitFrame\Emitter\SapiEmitter;
use BitFrame\Whoops\ErrorHandler;
use BitFrame\Whoops\Provider\HandlerProviderNegotiator;
use BitFrame\Factory\HttpFactory;

$app = new App();

$middleware = function () {
    throw new \Exception('hello world!');
};

$app->use([
    SapiEmitter::class,
    new ErrorHandler(HttpFactory::getFactory(), HandlerProviderNegotiator::class, [
        'addTraceToOutput' => true,
        'setJsonApi' => false,
    ]),
    $middleware,
]);

$app->run();

要使用BitFrame\App(或其他PSR-15分发器)处理全局错误,它看起来像这样

use BitFrame\App;
use BitFrame\Whoops\ErrorHandler;
use BitFrame\Factory\HttpFactory;

$app = new App();

$app->run([
    ErrorHandler::fromNegotiator(HttpFactory::getFactory(), [
        'catchGlobalErrors' => true,
        'addTraceToOutput' => true,
        'setJsonApi' => false,
    ]),
]);

throw new \Exception('hello world!');

它是如何工作的?

错误处理器中间件会自动根据Accept头确定要使用的错误处理器。以下错误处理器提供者包括

  1. BitFrame\Whoops\Provider\HtmlHandlerProvider用于Whoops\Handler\PrettyPageHandler
  2. BitFrame\Whoops\Provider\JsonHandlerProvider用于Whoops\Handler\JsonResponseHandler
  3. BitFrame\Whoops\Provider\JsonpHandlerProvider用于BitFrame\Whoops\Handler\JsonpResponseHandler
  4. BitFrame\Whoops\Provider\TextHandlerProvider用于Whoops\Handler\PlainTextHandler
  5. BitFrame\Whoops\Provider\XmlHandlerProvider用于Whoops\Handler\XmlResponseHandler

测试

要运行测试,您可以使用以下命令

贡献

文档

v3的完整文档将很快可用。

许可

有关许可信息,请参阅许可文件