Middleware to catch and format errors encountered while handling the request.
- PHP >= 7.2
- A PSR-7 http library
- A PSR-15 middleware dispatcher
This package is installable and autoloadable via Composer as middlewares/error-handler.
composer require middlewares/error-handler
use Middlewares\ErrorFormatter;
use Middlewares\ErrorHandler;
use Middlewares\Utils\Dispatcher;
// Create a new ErrorHandler instance
// Any number of formatters can be added. One will be picked based on the Accept
// header of the request. If no formatter matches, the first formatter in the array
// will be used.
$errorHandler = new ErrorHandler([
new ErrorFormatter\HtmlFormatter(),
new ErrorFormatter\ImageFormatter(),
new ErrorFormatter\JsonFormatter(),
new ErrorFormatter\PlainFormatter(),
new ErrorFormatter\SvgFormatter(),
new ErrorFormatter\XmlFormatter(),
]);
// ErrorHandler should always be the first middleware in the stack!
$dispatcher = new Dispatcher([
$errorHandler,
// ...
function ($request) {
throw HttpErrorException::create(404);
}
]);
$request = $serverRequestFactory->createServerRequest('GET', '/');
$response = $dispatcher->dispatch($request);
Add the formatters to be used (instances of Middlewares\ErrorFormatter\FormatterInterface
). If no formatters are provided, use all available.
$errorHandler = new ErrorHandler([
new ErrorFormatter\HtmlFormatter(),
new ErrorFormatter\JsonFormatter()
]);
Note: If no formatter is found, the first value of the array will be used. In the example above, HtmlFormatter
.
Please see CHANGELOG for more information about recent changes and CONTRIBUTING for contributing details.
The MIT License (MIT). Please see LICENSE for more information.