РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
520 of 1361 menu

Метод getStatusCode

Метод getStatusCode класса FlattenException возвращает HTTP-код ответа, который будет отправлен клиенту при обработке исключения. Класс FlattenException представляет собой "сплющенную" версию исключения и используется в слушателях ядра для логирования и формирования ответа. Параметров метод не принимает.

Синтаксис

public function getStatusCode(): int

Пример

Давайте создадим исключение и обернём его в FlattenException, после чего получим код статуса:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $exception = new \RuntimeException('article error', 500); $flatten = FlattenException::createFromThrowable($exception); return new Response($flatten->getStatusCode()); } } ?>

Результат выполнения кода:

500

Пример

Давайте используем NotFoundHttpException и получим её код статуса:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $exception = new NotFoundHttpException('article not found'); $flatten = FlattenException::createFromThrowable($exception); return new Response($flatten->getStatusCode()); } } ?>

Результат выполнения кода:

404

Пример

Давайте переберём несколько исключений и выведем их коды статусов в виде массива:

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\ErrorHandler\Exception\FlattenException; use Symfony\Component\HttpKernel\Exception\BadRequestHttpException; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; class ArticleController extends AbstractController { #[Route('/', name: 'article_index')] public function index(): Response { $exceptions = [ new BadRequestHttpException('bad request'), new AccessDeniedHttpException('access denied'), new NotFoundHttpException('not found'), ]; $res = []; foreach ($exceptions as $exception) { $flatten = FlattenException::createFromThrowable($exception); $res[] = $flatten->getStatusCode(); } return new Response(implode(', ', $res)); } } ?>

Результат выполнения кода:

400, 403, 404

Смотрите также

  • класс FlattenException,
    который представляет сплющенную версию исключения
  • метод createFromThrowable,
    который создаёт FlattenException из исключения
  • метод getMessage,
    который возвращает сообщение исключения
  • интерфейс getStatusCode,
    который объявляет получение кода статуса у HTTP-исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить