enjoyscms / error-handler
This package is abandoned and no longer maintained.
The author suggests using the enjoys/error-handler package instead.
2.1.1
2023-06-07 08:13 UTC
Requires
- php: ^8.0
- ext-gd: *
- enjoyscms/core: >=4.7.3
- psr/http-message: ^1.0|^2.0
- psr/http-server-middleware: ^1.0
- psr/log: ^1.0|^2.0|^3.0
Requires (Dev)
- httpsoft/http-emitter: ^1.1
- httpsoft/http-message: ^1.1
- phpunit/phpunit: ^9.6|^10.1
README
ErrorHandler
$errorHandler = new \EnjoysCMS\ErrorHandler\ErrorHandler( request: $request, //required, Psr\Http\Message\ServerRequestInterface::class emitter: $emitter, //required, EnjoysCMS\Core\Interfaces\EmitterInterface::class responseFactory: $responseFactory, //required, Psr\Http\Message\ResponseFactoryInterface::class logger: $logger, // Psr\Log\LoggerInterface::class or null ); // Все ошибки будут выводиться с http статусом 500, с помощью setErrorsMap() можно переопределить статусы ошибок. // По-умолчанию в logger передаваться ничего не будет. $errorHandler->setErrorsMap([ 404 => [ NotFoundException::class, NoResultException::class, //... ], 403 => [ ForbiddenException::class ] ]); // Установка другого шаблона для вывода ошибок в HTML \EnjoysCMS\ErrorHandler\Output\Html::setHtmlTemplater( // Реализация \EnjoysCMS\ErrorHandler\View\ViewInterface // уже внутри реализации можно настроить разные шаблоны под // разные ошибки, например для 404 и 403 new \EnjoysCMS\ErrorHandler\View\SimpleHtmlViewVerbose() ); // Для передачи ошибки в logger, необходимо сопоставить ошибки с уровнем лога при помощи setLoggerTypeMap() $errorHandler->setLoggerTypeMap([ // для конкретно этой ошибки, будет вызван $logger->info() NoResultException::class => ['info'], // для конкретно этой ошибки, будет вызван $logger->debug() и $logger->warning() NotFoundException::class => ['debug', 'warning'], // для всех ошибок со статусом 500 будет вызван $logger->error() 500 => ['error'], // эта ошибка со статусом 500 вызвать $logger->error() НЕ будет, но будет вызван $logger->critical() \InvalidArgumentException::class => ['critical'], //... ]); try { // ... something code } catch(\Throwable $error) { $errorHandler->handle($error); }
ErrorHandlerMiddleware
$errorHandler = new \EnjoysCMS\ErrorHandler\ErrorHandler(); // ... more setting error handler $errorHandlerMiddleware = new \EnjoysCMS\ErrorHandler\ErrorHandlerMiddleware($errorHandler);