Метод prepare класса Response
Метод prepare класса Response подготавливает объект ответа к отправке. Он вызывается автоматически ядром Symfony перед отправкой ответа клиенту и приводит ответ в соответствие с требованиями HTTP-протокола: устанавливает статус-код, заголовки и содержимое. Метод не принимает параметров и возвращает тот же объект Response, что позволяет использовать его в цепочке вызовов.
Синтаксис
public function prepare(Request $request): static
Пример
Давайте создадим ответ и вручную вызовем метод prepare, чтобы подготовить его к отправке:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$response = new Response('hello');
$response->prepare($request);
return $response;
}
}
?>
Результат выполнения кода:
hello
Пример
Давайте посмотрим, как метод prepare устанавливает заголовок Content-Type на основе переданного ответа:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$response = new Response('abcde');
$response->prepare($request);
$contentType = $response->headers->get('Content-Type');
return new Response($contentType);
}
}
?>
Результат выполнения кода:
"text/html; charset=UTF-8"
Пример
Давайте подготовим ответ со статус-кодом 404 и проверим его состояние:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$response = new Response('user', Response::HTTP_NOT_FOUND);
$response->prepare($request);
return new Response($response->getStatusCode());
}
}
?>
Результат выполнения кода:
404
Смотрите также
-
класс
Response,
который представляет HTTP-ответ -
метод
send,
который отправляет ответ клиенту -
метод
setStatusCode,
который задаёт статус-код ответа -
метод
setContent,
который задаёт содержимое ответа