Метод count класса ConstraintViolationList
Метод count класса ConstraintViolationList возвращает
целое число - количество ошибок валидации, содержащихся в списке.
Этот метод реализует интерфейс Countable, поэтому его также
можно вызывать через функцию count или использовать
в конструкции count($list). Параметров метод не принимает.
Синтаксис
public function count(): int
Пример
Давайте создадим валидатор, проверим объект с ошибочными данными и посчитаем количество нарушений:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new class {
#[AssertNotBlank]
public string $title = '';
#[AssertLength(min: 5)]
public string $text = 'abc';
};
$validator = Validation::createValidator();
$violations = $validator->validate($article);
return new Response((string) $violations->count());
}
}
?>
Результат выполнения кода:
2
Пример
Так как класс реализует Countable, метод count
можно вызывать и через одноимённую функцию:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new class {
#[AssertNotBlank]
public string $title = 'abcde';
#[AssertLength(min: 5)]
public string $text = 'abc';
};
$validator = Validation::createValidator();
$violations = $validator->validate($article);
return new Response((string) count($violations));
}
}
?>
Результат выполнения кода:
1
Пример
Если ошибок нет, метод вернёт 0. Проверим это
на корректных данных:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentValidatorValidation;
use SymfonyComponentValidatorConstraints as Assert;
class ArticleController extends AbstractController
{
public function index(): Response
{
$article = new class {
#[AssertNotBlank]
public string $title = 'article';
#[AssertLength(min: 5)]
public string $text = 'abcde';
};
$validator = Validation::createValidator();
$violations = $validator->validate($article);
return new Response((string) $violations->count());
}
}
?>
Результат выполнения кода:
0
Смотрите также
-
класс
ConstraintViolationList,
который хранит список нарушений валидации -
метод
get,
который возвращает нарушение по его индексу -
метод
has,
который проверяет наличие нарушения по индексу -
метод
validate,
который запускает валидацию объекта