| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- <?php
- /*
- * Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
- * SPDX-License-Identifier: MIT
- */
- declare(strict_types=1);
- namespace Respect\Validation\Exceptions;
- use ArrayIterator;
- use Countable;
- use RecursiveIterator;
- use UnexpectedValueException;
- /**
- * @author Henrique Moody <henriquemoody@gmail.com>
- *
- * @implements RecursiveIterator<int, ValidationException>
- */
- final class RecursiveExceptionIterator implements RecursiveIterator, Countable
- {
- /**
- * @var ArrayIterator|ValidationException[]
- */
- private $exceptions;
- public function __construct(NestedValidationException $parent)
- {
- $this->exceptions = new ArrayIterator($parent->getChildren());
- }
- public function count(): int
- {
- return $this->exceptions->count();
- }
- public function hasChildren(): bool
- {
- if (!$this->valid()) {
- return false;
- }
- return $this->current() instanceof NestedValidationException;
- }
- public function getChildren(): self
- {
- $exception = $this->current();
- if (!$exception instanceof NestedValidationException) {
- throw new UnexpectedValueException();
- }
- return new static($exception);
- }
- /**
- * @return ValidationException|NestedValidationException
- */
- public function current(): ValidationException
- {
- return $this->exceptions->current();
- }
- public function key(): int
- {
- return $this->exceptions->key();
- }
- public function next(): void
- {
- $this->exceptions->next();
- }
- public function rewind(): void
- {
- $this->exceptions->rewind();
- }
- public function valid(): bool
- {
- return $this->exceptions->valid();
- }
- }
|