Метод getHeaders класса HttpExceptionInterface
Метод getHeaders принадлежит интерфейсу
HttpExceptionInterface. Любое исключение
в Symfony, реализующее этот интерфейс, обязано
вернуть ассоциативный массив заголовков.
Эти заголовки будут автоматически добавлены
в HTTP-ответ при обработке исключения.
Метод не принимает параметров и возвращает
массив, где ключ - имя заголовка, а значение -
его содержимое.
Синтаксис
public function getHeaders(): array
Пример
Давайте создадим собственное исключение,
которое реализует HttpExceptionInterface,
и вернём из метода getHeaders заголовок
X-Custom-Header:
<?php
namespace AppException;
use SymfonyComponentHttpKernelExceptionHttpExceptionInterface;
class CustomHttpException extends Exception implements HttpExceptionInterface
{
public function getStatusCode(): int
{
return 400;
}
public function getHeaders(): array
{
return [
'X-Custom-Header' => 'article',
];
}
}
?>
Пример
Давайте выбросим это исключение в контроллере и посмотрим, какие заголовки будут отправлены:
<?php
namespace AppController;
use AppExceptionCustomHttpException;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
throw new CustomHttpException('Bad request');
}
}
?>
Результат выполнения кода (заголовки ответа):
X-Custom-Header: article
Пример
Давайте рассмотрим стандартное исключение
NotFoundHttpException и получим его заголовки
через метод getHeaders:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentHttpKernelExceptionNotFoundHttpException;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/', name: 'article_index')]
public function index(): Response
{
$exception = new NotFoundHttpException('Page not found');
$res = $exception->getHeaders();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[]
Смотрите также
-
интерфейс
HttpExceptionInterface,
который определяет методы для HTTP-исключений -
метод
getStatusCode,
который возвращает код состояния HTTP -
класс
HttpException,
который является базовым HTTP-исключением -
класс
NotFoundHttpException,
который представляет ошибку 404