designcise / bitframe-whoops
Whoops错误处理器中间件
v4.0.0
2023-07-01 23:51 UTC
Requires
- php: >=8.2
- filp/whoops: ^2.15
- psr/http-factory: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- mockery/mockery: ^1.4
- phpmd/phpmd: @stable
- phpstan/phpstan: *
- phpunit/phpunit: ^9.5
- squizlabs/php_codesniffer: 3.*
README
Whoops错误处理器中间件用于处理应用程序或中间件特定的错误。
安装
$ composer require "designcise/bitframe-whoops"
请注意,此包需要PHP 8.2.0或更高版本。
快速入门
实例化
构造函数有以下签名
new ErrorHandler( ResponseFactoryInterface, HandlerProviderNegotiator::class, [options], );
- 构造函数的第一个参数必须是
Psr\Http\Message\ResponseFactoryInterface
的实例; - 构造函数的第二个参数必须是
\BitFrame\Whoops\Provider\ProviderInterface
的实现; - 构造函数的第三个参数是可选的选项数组,用于指定以下内容
catchGlobalErrors
:当设置为true
时,错误将在当前中间件集合之外处理。- 其他选项只是
Whoops\Handler\*Handler.php
和BitFrame\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
头确定要使用的错误处理器。以下错误处理器提供者包括
BitFrame\Whoops\Provider\HtmlHandlerProvider
用于Whoops\Handler\PrettyPageHandler
;BitFrame\Whoops\Provider\JsonHandlerProvider
用于Whoops\Handler\JsonResponseHandler
;BitFrame\Whoops\Provider\JsonpHandlerProvider
用于BitFrame\Whoops\Handler\JsonpResponseHandler
;BitFrame\Whoops\Provider\TextHandlerProvider
用于Whoops\Handler\PlainTextHandler
;BitFrame\Whoops\Provider\XmlHandlerProvider
用于Whoops\Handler\XmlResponseHandler
;
测试
要运行测试,您可以使用以下命令
贡献
- 在https://github.com/designcise/bitframe-whoops/issues上提交问题
- 将补丁提交到https://github.com/designcise/bitframe-whoops/pulls
文档
v3的完整文档将很快可用。
许可
有关许可信息,请参阅许可文件。