Метод isClientError
Метод isClientError класса Response возвращает true, если код состояния ответа находится в диапазоне клиентских ошибок от 400 до 499. В противном случае метод возвращает false. Параметров метод не принимает.
Синтаксис
$res->isClientError();
Пример
Давайте создадим ответ со статусом 404 и проверим, является ли он клиентской ошибкой:
<?php
use Symfony\Component\HttpFoundation\Response;
$res = new Response('hello', 404);
var_dump($res->isClientError());
?>
Результат выполнения кода:
true
Пример
Давайте создадим успешный ответ со статусом 200 и проверим результат:
<?php
use Symfony\Component\HttpFoundation\Response;
$res = new Response('abcde', 200);
var_dump($res->isClientError());
?>
Результат выполнения кода:
false
Пример
Давайте переберём несколько кодов состояния и выведем результат проверки для каждого из них:
<?php
use Symfony\Component\HttpFoundation\Response;
$codes = [200, 301, 404, 500];
foreach ($codes as $code) {
$res = new Response('hello', $code);
echo $code . ': ' . var_export($res->isClientError(), true) . "\n";
}
?>
Результат выполнения кода:
200: false
301: false
404: true
500: false
Пример
Давайте используем метод в контроллере, чтобы вернуть разный ответ в зависимости от кода состояния:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(): Response
{
$res = new Response('article', 403);
if ($res->isClientError()) {
return new Response('client error');
}
return $res;
}
}
?>
Результат выполнения кода:
client error
Смотрите также
-
метод
isServerError,
который проверяет серверную ошибку (5xx) -
метод
isSuccessful,
который проверяет успешный статус (2xx) -
метод
getStatusCode,
который возвращает код состояния ответа -
метод
setStatusCode,
который задаёт код состояния ответа