# Класс HttpSoft\ErrorHandler\ErrorResponseGenerator
Класс, реализующий HttpSoft\ErrorHandler\ErrorResponseGeneratorInterface.
Код состояния ответа по умолчанию 500
. Если код ошибки валидный (>= 400 && < 600
) и является значением одной из констант в HttpSoft\Response\ResponseStatusCodeInterface, то код состояния ответа будет изменен на код ошибки.
use HttpSoft\ErrorHandler\ErrorResponseGenerator;
/**
* @var Psr\Http\Message\ServerRequestInterface $request
*/
$responseGenerator = new ErrorResponseGenerator();
$response = $responseGenerator->generate(new \Exception(), $request);
$response->getStatusCode(); // 500
$response->getReasonPhrase(); // 'Internal Server Error'
$response = $responseGenerator->generate(new \Exception('', 301), $request);
$response->getStatusCode(); // 500
$response->getReasonPhrase(); // 'Internal Server Error'
$response = $responseGenerator->generate(new \Exception('', 404), $request);
$response->getStatusCode(); // 404
$response->getReasonPhrase(); // 'Not Found'
$response = $responseGenerator->generate(new \Exception('', 502), $request);
$response->getStatusCode(); // 502
$response->getReasonPhrase(); // 'Bad Gateway'
При генерации ответа попытается определить тип возвращаемого контента по заголовку запроса Accept.
use HttpSoft\ErrorHandler\ErrorResponseGenerator;
/**
* @var Throwable $e
* @var Psr\Http\Message\ServerRequestInterface $request
*/
$responseGenerator = new ErrorResponseGenerator();
// Вернуть экземпляр `HttpSoft\Response\TextResponse`
$responseGenerator->generate($e, $request->withHeader('accept', 'text/plain'));
$responseGenerator->generate($e, $request->withHeader('accept', 'application/json;q=0.99, text/plain'));
$responseGenerator->generate($e, $request->withHeader('accept', 'text/plain, text/html, application/json'));
// Вернуть экземпляр `HttpSoft\Response\JsonResponse`
$responseGenerator->generate($e, $request->withHeader('accept', 'application/json'));
$responseGenerator->generate($e, $request->withHeader('accept', 'text/plain;q=0.99, application/json'));
$responseGenerator->generate($e, $request->withHeader('accept', 'application/json, text/plain, text/html'));
// Вернуть экземпляр `HttpSoft\Response\XmlResponse`
$responseGenerator->generate($e, $request->withHeader('accept', 'text/xml'));
$responseGenerator->generate($e, $request->withHeader('accept', 'application/xml'));
$responseGenerator->generate($e, $request->withHeader('accept', 'text/plain;q=0.99, application/xml'));
$responseGenerator->generate($e, $request->withHeader('accept', 'application/xml, text/plain, text/html'));
// Вернуть экземпляр `HttpSoft\Response\HtmlResponse`
$responseGenerator->generate($e, $request); // без заголовка Accept
$responseGenerator->generate($e, $request->withHeader('accept', '*/*'));
$responseGenerator->generate($e, $request->withHeader('accept', 'text/html'));
$responseGenerator->generate($e, $request->withHeader('accept', 'application/json;q=0.99, text/html'));
$responseGenerator->generate($e, $request->withHeader('accept', 'text/html, text/plain, application/json'));
# Публичные методы
Оригинальное подробное описание методов смотрите в HttpSoft\ErrorHandler\ErrorResponseGeneratorInterface.
# generate
Генерирует экземпляр Psr\Http\Message\ResponseInterface с информацией об обработанной ошибке.
public function generate(Throwable $error, ServerRequestInterface $request): ResponseInterface;
HttpSoft\Response реализует Psr\Http\Message\ResponseInterface
.