class ConstraintViolationList
Default implementation of {@ConstraintViolationListInterface}.
@author Bernhard Schussek <bschussek@gmail.com>
@implements \IteratorAggregate<int, ConstraintViolationInterface>
Hierarchy
- class \Symfony\Component\Validator\ConstraintViolationList implements \Symfony\Component\Validator\IteratorAggregate, \Symfony\Component\Validator\ConstraintViolationListInterface
Expanded class hierarchy of ConstraintViolationList
14 files declare their use of ConstraintViolationList
- ConstraintValidatorTestCase.php in vendor/
symfony/ validator/ Test/ ConstraintValidatorTestCase.php - ConstraintViolationBuilder.php in vendor/
symfony/ validator/ Violation/ ConstraintViolationBuilder.php - ConstraintViolationBuilder.php in core/
lib/ Drupal/ Core/ Validation/ ConstraintViolationBuilder.php - ContextAwarePluginTrait.php in core/
lib/ Drupal/ Core/ Plugin/ ContextAwarePluginTrait.php - ContextDefinition.php in core/
lib/ Drupal/ Core/ Plugin/ Context/ ContextDefinition.php
File
-
vendor/
symfony/ validator/ ConstraintViolationList.php, line 23
Namespace
Symfony\Component\ValidatorView source
class ConstraintViolationList implements \IteratorAggregate, ConstraintViolationListInterface {
/**
* @var list<ConstraintViolationInterface>
*/
private array $violations = [];
/**
* Creates a new constraint violation list.
*
* @param iterable<mixed, ConstraintViolationInterface> $violations The constraint violations to add to the list
*/
public function __construct(iterable $violations = []) {
foreach ($violations as $violation) {
$this->add($violation);
}
}
public static function createFromMessage(string $message) : self {
$self = new self();
$self->add(new ConstraintViolation($message, '', [], null, '', null));
return $self;
}
public function __toString() : string {
$string = '';
foreach ($this->violations as $violation) {
$string .= $violation . "\n";
}
return $string;
}
public function add(ConstraintViolationInterface $violation) : void {
$this->violations[] = $violation;
}
public function addAll(ConstraintViolationListInterface $otherList) : void {
foreach ($otherList as $violation) {
$this->violations[] = $violation;
}
}
public function get(int $offset) : ConstraintViolationInterface {
if (!isset($this->violations[$offset])) {
throw new OutOfBoundsException(\sprintf('The offset "%s" does not exist.', $offset));
}
return $this->violations[$offset];
}
public function has(int $offset) : bool {
return isset($this->violations[$offset]);
}
public function set(int $offset, ConstraintViolationInterface $violation) : void {
$this->violations[$offset] = $violation;
}
public function remove(int $offset) : void {
unset($this->violations[$offset]);
}
/**
* @return \ArrayIterator<int, ConstraintViolationInterface>
*/
public function getIterator() : \ArrayIterator {
return new \ArrayIterator($this->violations);
}
public function count() : int {
return \count($this->violations);
}
public function offsetExists(mixed $offset) : bool {
return $this->has($offset);
}
public function offsetGet(mixed $offset) : ConstraintViolationInterface {
return $this->get($offset);
}
public function offsetSet(mixed $offset, mixed $violation) : void {
if (null === $offset) {
$this->add($violation);
}
else {
$this->set($offset, $violation);
}
}
public function offsetUnset(mixed $offset) : void {
$this->remove($offset);
}
/**
* Creates iterator for errors with specific codes.
*
* @param string|string[] $codes The codes to find
*/
public function findByCodes(string|array $codes) : static {
$codes = (array) $codes;
$violations = [];
foreach ($this as $violation) {
if (\in_array($violation->getCode(), $codes, true)) {
$violations[] = $violation;
}
}
return new static($violations);
}
}