# Класс HttpSoft\ErrorHandler\ErrorHandlerMiddleware
Посредник, реализующий Psr\Http\Server\MiddlewareInterface.
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.
Если в процессе обработки возникает ошибка:
- Будут запущены все слушатели, которые были ранее добавлены в очередь методом addListener().
- При помощи экземпляра HttpSoft\ErrorHandler\ErrorResponseGeneratorInterface будет сгенерирован экземпляр Psr\Http\Message\ResponseInterface с информацией об обработанной ошибке.
Если сгенерированный ответ с информацией об обработанной ошибке имеет валидный код состояния (>= 400 && < 600
), он будет возвращен без изменений.
Если код состояния сгенерированного ответа невалидный, а код ошибки валидный, то код ответа будет изменен на код ошибки.
Если код состояния сгенерированного ответа и код ошибки невалидны, возвращается ответ с кодом состояния 500
.