Метод 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-исключений