for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
<?php declare(strict_types = 1);
namespace jschreuder\Middle;
use Psr\Http\Message\ResponseInterface;
use Psr\Http\Message\ServerRequestInterface;
use Psr\Log\LoggerInterface;
class ErrorHandlerMiddleware implements HttpMiddlewareInterface
{
/** @var LoggerInterface */
private $logger;
/** @var callable */
private $errorController;
public function __construct(LoggerInterface $logger, callable $errorController)
$this->logger = $logger;
$this->errorController = $errorController;
}
public function process(ServerRequestInterface $request, DelegateInterface $delegate) : ResponseInterface
try {
return $delegate->next($request);
} catch (\Throwable $exception) {
$this->logger->alert($exception->getMessage(), [
'line' => $exception->getLine(),
'file' => $exception->getFile(),
'backtrace' => $exception->getTrace()
]);
return ($this->errorController)($exception, $request);