function PsrHttpFactory::createResponse
Overrides HttpMessageFactoryInterface::createResponse
File
-
vendor/
symfony/ psr-http-message-bridge/ Factory/ PsrHttpFactory.php, line 153
Class
- PsrHttpFactory
- Builds Psr\HttpMessage instances using a PSR-17 implementation.
Namespace
Symfony\Bridge\PsrHttpMessage\FactoryCode
public function createResponse(Response $symfonyResponse) : ResponseInterface {
$response = $this->responseFactory
->createResponse($symfonyResponse->getStatusCode(), Response::$statusTexts[$symfonyResponse->getStatusCode()] ?? '');
if ($symfonyResponse instanceof BinaryFileResponse && !$symfonyResponse->headers
->has('Content-Range')) {
$stream = $this->streamFactory
->createStreamFromFile($symfonyResponse->getFile()
->getPathname());
}
else {
$stream = $this->streamFactory
->createStreamFromFile('php://temp', 'wb+');
if ($symfonyResponse instanceof StreamedResponse || $symfonyResponse instanceof BinaryFileResponse) {
ob_start(function ($buffer) use ($stream) {
$stream->write($buffer);
return '';
}, 1);
$symfonyResponse->sendContent();
ob_end_clean();
}
else {
$stream->write($symfonyResponse->getContent());
}
}
$response = $response->withBody($stream);
$headers = $symfonyResponse->headers
->all();
$cookies = $symfonyResponse->headers
->getCookies();
if ($cookies) {
$headers['Set-Cookie'] = [];
foreach ($cookies as $cookie) {
$headers['Set-Cookie'][] = $cookie->__toString();
}
}
foreach ($headers as $name => $value) {
try {
$response = $response->withHeader($name, $value);
} catch (\InvalidArgumentException $e) {
// ignore invalid header
}
}
$protocolVersion = $symfonyResponse->getProtocolVersion();
return $response->withProtocolVersion($protocolVersion);
}