annotate vendor/symfony/validator/Validator/RecursiveValidator.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@0 1 <?php
Chris@0 2
Chris@0 3 /*
Chris@0 4 * This file is part of the Symfony package.
Chris@0 5 *
Chris@0 6 * (c) Fabien Potencier <fabien@symfony.com>
Chris@0 7 *
Chris@0 8 * For the full copyright and license information, please view the LICENSE
Chris@0 9 * file that was distributed with this source code.
Chris@0 10 */
Chris@0 11
Chris@0 12 namespace Symfony\Component\Validator\Validator;
Chris@0 13
Chris@0 14 use Symfony\Component\Validator\ConstraintValidatorFactoryInterface;
Chris@0 15 use Symfony\Component\Validator\Context\ExecutionContextFactoryInterface;
Chris@0 16 use Symfony\Component\Validator\Context\ExecutionContextInterface;
Chris@0 17 use Symfony\Component\Validator\Mapping\Factory\MetadataFactoryInterface;
Chris@0 18 use Symfony\Component\Validator\ObjectInitializerInterface;
Chris@0 19
Chris@0 20 /**
Chris@0 21 * Recursive implementation of {@link ValidatorInterface}.
Chris@0 22 *
Chris@0 23 * @author Bernhard Schussek <bschussek@gmail.com>
Chris@0 24 */
Chris@0 25 class RecursiveValidator implements ValidatorInterface
Chris@0 26 {
Chris@0 27 protected $contextFactory;
Chris@0 28 protected $metadataFactory;
Chris@0 29 protected $validatorFactory;
Chris@0 30 protected $objectInitializers;
Chris@0 31
Chris@0 32 /**
Chris@0 33 * Creates a new validator.
Chris@0 34 *
Chris@0 35 * @param ExecutionContextFactoryInterface $contextFactory The factory for
Chris@0 36 * creating new contexts
Chris@0 37 * @param MetadataFactoryInterface $metadataFactory The factory for
Chris@0 38 * fetching the metadata
Chris@0 39 * of validated objects
Chris@0 40 * @param ConstraintValidatorFactoryInterface $validatorFactory The factory for creating
Chris@0 41 * constraint validators
Chris@0 42 * @param ObjectInitializerInterface[] $objectInitializers The object initializers
Chris@0 43 */
Chris@17 44 public function __construct(ExecutionContextFactoryInterface $contextFactory, MetadataFactoryInterface $metadataFactory, ConstraintValidatorFactoryInterface $validatorFactory, array $objectInitializers = [])
Chris@0 45 {
Chris@0 46 $this->contextFactory = $contextFactory;
Chris@0 47 $this->metadataFactory = $metadataFactory;
Chris@0 48 $this->validatorFactory = $validatorFactory;
Chris@0 49 $this->objectInitializers = $objectInitializers;
Chris@0 50 }
Chris@0 51
Chris@0 52 /**
Chris@0 53 * {@inheritdoc}
Chris@0 54 */
Chris@0 55 public function startContext($root = null)
Chris@0 56 {
Chris@0 57 return new RecursiveContextualValidator(
Chris@0 58 $this->contextFactory->createContext($this, $root),
Chris@0 59 $this->metadataFactory,
Chris@0 60 $this->validatorFactory,
Chris@0 61 $this->objectInitializers
Chris@0 62 );
Chris@0 63 }
Chris@0 64
Chris@0 65 /**
Chris@0 66 * {@inheritdoc}
Chris@0 67 */
Chris@0 68 public function inContext(ExecutionContextInterface $context)
Chris@0 69 {
Chris@0 70 return new RecursiveContextualValidator(
Chris@0 71 $context,
Chris@0 72 $this->metadataFactory,
Chris@0 73 $this->validatorFactory,
Chris@0 74 $this->objectInitializers
Chris@0 75 );
Chris@0 76 }
Chris@0 77
Chris@0 78 /**
Chris@0 79 * {@inheritdoc}
Chris@0 80 */
Chris@0 81 public function getMetadataFor($object)
Chris@0 82 {
Chris@0 83 return $this->metadataFactory->getMetadataFor($object);
Chris@0 84 }
Chris@0 85
Chris@0 86 /**
Chris@0 87 * {@inheritdoc}
Chris@0 88 */
Chris@0 89 public function hasMetadataFor($object)
Chris@0 90 {
Chris@0 91 return $this->metadataFactory->hasMetadataFor($object);
Chris@0 92 }
Chris@0 93
Chris@0 94 /**
Chris@0 95 * {@inheritdoc}
Chris@0 96 */
Chris@0 97 public function validate($value, $constraints = null, $groups = null)
Chris@0 98 {
Chris@0 99 return $this->startContext($value)
Chris@0 100 ->validate($value, $constraints, $groups)
Chris@0 101 ->getViolations();
Chris@0 102 }
Chris@0 103
Chris@0 104 /**
Chris@0 105 * {@inheritdoc}
Chris@0 106 */
Chris@0 107 public function validateProperty($object, $propertyName, $groups = null)
Chris@0 108 {
Chris@0 109 return $this->startContext($object)
Chris@0 110 ->validateProperty($object, $propertyName, $groups)
Chris@0 111 ->getViolations();
Chris@0 112 }
Chris@0 113
Chris@0 114 /**
Chris@0 115 * {@inheritdoc}
Chris@0 116 */
Chris@0 117 public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
Chris@0 118 {
Chris@0 119 // If a class name is passed, take $value as root
Chris@17 120 return $this->startContext(\is_object($objectOrClass) ? $objectOrClass : $value)
Chris@0 121 ->validatePropertyValue($objectOrClass, $propertyName, $value, $groups)
Chris@0 122 ->getViolations();
Chris@0 123 }
Chris@0 124 }