* * For the full copyright and license information, please view the LICENSE file * that was distributed with this source code. */ declare(strict_types=1); namespace Respect\Validation\Rules; use Respect\Validation\Exceptions\NoneOfException; use function count; /** * @author Alexandre Gomes Gaigalas * @author Henrique Moody */ final class NoneOf extends AbstractComposite { /** * {@inheritDoc} */ public function assert($input): void { $exceptions = $this->getAllThrownExceptions($input); $numRules = count($this->getRules()); $numExceptions = count($exceptions); if ($numRules !== $numExceptions) { /** @var NoneOfException $noneOfException */ $noneOfException = $this->reportError($input); $noneOfException->addChildren($exceptions); throw $noneOfException; } } /** * {@inheritDoc} */ public function validate($input): bool { foreach ($this->getRules() as $rule) { if ($rule->validate($input)) { return false; } } return true; } }