Final Class Yiisoft\ErrorHandler\ThrowableResponseFactory
| Inheritance | Yiisoft\ErrorHandler\ThrowableResponseFactory |
|---|---|
| Implements | Yiisoft\ErrorHandler\ThrowableResponseFactoryInterface |
ThrowableResponseFactory produces a response with rendered Throwable object.
Public Methods
| Method | Description | Defined By |
|---|---|---|
| __construct() | Yiisoft\ErrorHandler\ThrowableResponseFactory | |
| create() | Yiisoft\ErrorHandler\ThrowableResponseFactory |
Method Details
| public mixed __construct ( \Psr\Http\Message\ResponseFactoryInterface $responseFactory, Yiisoft\ErrorHandler\ErrorHandler $errorHandler, Yiisoft\ErrorHandler\RendererProvider\RendererProviderInterface $rendererProvider, Yiisoft\ErrorHandler\HeadersProvider|null $headersProvider = null ) | ||
| $responseFactory | \Psr\Http\Message\ResponseFactoryInterface | |
| $errorHandler | Yiisoft\ErrorHandler\ErrorHandler | |
| $rendererProvider | Yiisoft\ErrorHandler\RendererProvider\RendererProviderInterface | |
| $headersProvider | Yiisoft\ErrorHandler\HeadersProvider|null | |
public function __construct(
private readonly ResponseFactoryInterface $responseFactory,
private readonly ErrorHandler $errorHandler,
private readonly RendererProviderInterface $rendererProvider,
?HeadersProvider $headersProvider = null,
) {
$this->headersProvider = $headersProvider ?? new HeadersProvider();
}
| public \Psr\Http\Message\ResponseInterface create ( Throwable $throwable, \Psr\Http\Message\ServerRequestInterface $request ) | ||
| $throwable | Throwable | |
| $request | \Psr\Http\Message\ServerRequestInterface | |
public function create(Throwable $throwable, ServerRequestInterface $request): ResponseInterface
{
$renderer = $this->rendererProvider->get($request);
$response = $this->responseFactory->createResponse(Status::INTERNAL_SERVER_ERROR);
foreach ($this->headersProvider->getAll() as $name => $value) {
$response = $response->withHeader($name, $value);
}
return $this->errorHandler
->handle($throwable, $renderer, $request)
->addToResponse($response);
}
Signup or Login in order to comment.