Метод getStatusCode
Метод getStatusCode принадлежит интерфейсу
HttpExceptionInterface и возвращает целочисленный
HTTP-код ответа, который должен быть отправлен клиенту
вместе с исключением. Все HTTP-исключения Symfony
реализуют этот интерфейс, поэтому метод доступен
у любого из них. Параметров метод не принимает.
Синтаксис
public function getStatusCode(): int
Пример
Давайте выбросим исключение NotFoundHttpException
и получим его HTTP-код через метод getStatusCode:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$exception = new NotFoundHttpException('article not found');
return new Response((string) $exception->getStatusCode());
}
}
?>
Результат выполнения кода:
404
Пример
Давайте проверим код у исключения
BadRequestHttpException:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\BadRequestHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/user', name: 'article_user')]
public function user(): Response
{
$exception = new BadRequestHttpException('bad request');
return new Response((string) $exception->getStatusCode());
}
}
?>
Результат выполнения кода:
400
Пример
Давайте переберём несколько исключений и выведем их коды в виде массива:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/list', name: 'article_list')]
public function list(): Response
{
$exceptions = [
new NotFoundHttpException('not found'),
new AccessDeniedHttpException('access denied'),
new UnauthorizedHttpException('Bearer', 'unauthorized'),
];
$res = [];
foreach ($exceptions as $exception) {
$res[] = $exception->getStatusCode();
}
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода:
[404, 403, 401]
Смотрите также
-
интерфейс
HttpExceptionInterface,
который реализуют все HTTP-исключения -
метод
getHeaders,
который возвращает HTTP-заголовки исключения -
класс
NotFoundHttpException,
который соответствует ошибке 404 -
класс
AccessDeniedHttpException,
который соответствует ошибке 403