Skip to main content
Drupal API
User account menu
  • Log in

Breadcrumb

  1. Drupal Core 11.1.x
  2. PsrHttpFactory.php

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\Factory

Code

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);
}

API Navigation

  • Drupal Core 11.1.x
  • Topics
  • Classes
  • Functions
  • Constants
  • Globals
  • Files
  • Namespaces
  • Deprecated
  • Services
RSS feed
Powered by Drupal