# Класс HttpSoft\ErrorHandler\ErrorHandlerMiddleware

Посредник, реализующий Psr\Http\Server\MiddlewareInterface.

Исходный код на GitHub.

use HttpSoft\ErrorHandler\ErrorHandlerMiddleware;

/**
 * @var Psr\Http\Message\ServerRequestInterface $request
 * @var Psr\Http\Server\RequestHandlerInterface $handler
 *
 * @var HttpSoft\Emitter\EmitterInterface $emitter
 * @var HttpSoft\ErrorHandler\ErrorListenerInterface $logErrorListener
 * @var HttpSoft\ErrorHandler\ErrorListenerInterface $sendErrorListener
 * @var HttpSoft\ErrorHandler\ErrorResponseGeneratorInterface $responseGenerator
 */

$errorHandler = new ErrorHandlerMiddleware($responseGenerator);

$errorHandler->addListener($logErrorListener);
$errorHandler->addListener($sendErrorListener);

$response = $errorHandler->process($request, $handler);
$emitter->emit($response);

# Публичные методы

public function __construct(ErrorResponseGeneratorInterface $responseGenerator = null);

Если $responseGenerator не был указан или равняется null, то будет использоваться HttpSoft\ErrorHandler\ErrorResponseGenerator.

Ниже представлены методы, которые определены в интерфейсе Psr\Http\Server\MiddlewareInterface. Все остальные методы с описанием находятся в подключаемом трейте HttpSoft\ErrorHandler\ErrorHandlerTrait.

# process

Обрабатывает экземпляр Psr\Http\Server\RequestHandlerInterface.

public function process(
    ServerRequestInterface $request, 
    RequestHandlerInterface $handler
): ResponseInterface;

При перехвате исключения генерируется и возвращается ответ с информацией об ошибке, в противном случае используется ответ, возвращаемый экземпляром Psr\Http\Server\RequestHandlerInterface.

Если в процессе обработки возникает ошибка:

Если сгенерированный ответ с информацией об обработанной ошибке имеет валидный код состояния (>= 400 && < 600), он будет возвращен без изменений.

Если код состояния сгенерированного ответа невалидный, а код ошибки валидный, то код ответа будет изменен на код ошибки.

Если код состояния сгенерированного ответа и код ошибки невалидны, возвращается ответ с кодом состояния 500.