# Класс HttpSoft\ErrorHandler\ErrorHandler

Класс, реализующий Psr\Http\Server\RequestHandlerInterface.

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

use HttpSoft\ErrorHandler\ErrorHandler;

/**
 * @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 ErrorHandler($handler, $responseGenerator);

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

$response = $errorHandler->handle($request);
$emitter->emit($response);

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

public function __construct(
    RequestHandlerInterface $handler,
    ErrorResponseGeneratorInterface $responseGenerator = null
);

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

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

# handle

Обрабатывает экземпляр Psr\Http\Server\RequestHandlerInterface, который был передан в конструктор при создании объекта.

public function handle(ServerRequestInterface $request): ResponseInterface;

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

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

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

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

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