annotate vendor/symfony/validator/Validator/RecursiveValidator.php @ 8:50b0d041100e

Further files for download
author Chris Cannam
date Mon, 05 Feb 2018 10:56:40 +0000
parents 4c8ae668cc8c
children 1fec387a4317
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 /**
Chris@0 28 * @var ExecutionContextFactoryInterface
Chris@0 29 */
Chris@0 30 protected $contextFactory;
Chris@0 31
Chris@0 32 /**
Chris@0 33 * @var MetadataFactoryInterface
Chris@0 34 */
Chris@0 35 protected $metadataFactory;
Chris@0 36
Chris@0 37 /**
Chris@0 38 * @var ConstraintValidatorFactoryInterface
Chris@0 39 */
Chris@0 40 protected $validatorFactory;
Chris@0 41
Chris@0 42 /**
Chris@0 43 * @var ObjectInitializerInterface[]
Chris@0 44 */
Chris@0 45 protected $objectInitializers;
Chris@0 46
Chris@0 47 /**
Chris@0 48 * Creates a new validator.
Chris@0 49 *
Chris@0 50 * @param ExecutionContextFactoryInterface $contextFactory The factory for
Chris@0 51 * creating new contexts
Chris@0 52 * @param MetadataFactoryInterface $metadataFactory The factory for
Chris@0 53 * fetching the metadata
Chris@0 54 * of validated objects
Chris@0 55 * @param ConstraintValidatorFactoryInterface $validatorFactory The factory for creating
Chris@0 56 * constraint validators
Chris@0 57 * @param ObjectInitializerInterface[] $objectInitializers The object initializers
Chris@0 58 */
Chris@0 59 public function __construct(ExecutionContextFactoryInterface $contextFactory, MetadataFactoryInterface $metadataFactory, ConstraintValidatorFactoryInterface $validatorFactory, array $objectInitializers = array())
Chris@0 60 {
Chris@0 61 $this->contextFactory = $contextFactory;
Chris@0 62 $this->metadataFactory = $metadataFactory;
Chris@0 63 $this->validatorFactory = $validatorFactory;
Chris@0 64 $this->objectInitializers = $objectInitializers;
Chris@0 65 }
Chris@0 66
Chris@0 67 /**
Chris@0 68 * {@inheritdoc}
Chris@0 69 */
Chris@0 70 public function startContext($root = null)
Chris@0 71 {
Chris@0 72 return new RecursiveContextualValidator(
Chris@0 73 $this->contextFactory->createContext($this, $root),
Chris@0 74 $this->metadataFactory,
Chris@0 75 $this->validatorFactory,
Chris@0 76 $this->objectInitializers
Chris@0 77 );
Chris@0 78 }
Chris@0 79
Chris@0 80 /**
Chris@0 81 * {@inheritdoc}
Chris@0 82 */
Chris@0 83 public function inContext(ExecutionContextInterface $context)
Chris@0 84 {
Chris@0 85 return new RecursiveContextualValidator(
Chris@0 86 $context,
Chris@0 87 $this->metadataFactory,
Chris@0 88 $this->validatorFactory,
Chris@0 89 $this->objectInitializers
Chris@0 90 );
Chris@0 91 }
Chris@0 92
Chris@0 93 /**
Chris@0 94 * {@inheritdoc}
Chris@0 95 */
Chris@0 96 public function getMetadataFor($object)
Chris@0 97 {
Chris@0 98 return $this->metadataFactory->getMetadataFor($object);
Chris@0 99 }
Chris@0 100
Chris@0 101 /**
Chris@0 102 * {@inheritdoc}
Chris@0 103 */
Chris@0 104 public function hasMetadataFor($object)
Chris@0 105 {
Chris@0 106 return $this->metadataFactory->hasMetadataFor($object);
Chris@0 107 }
Chris@0 108
Chris@0 109 /**
Chris@0 110 * {@inheritdoc}
Chris@0 111 */
Chris@0 112 public function validate($value, $constraints = null, $groups = null)
Chris@0 113 {
Chris@0 114 return $this->startContext($value)
Chris@0 115 ->validate($value, $constraints, $groups)
Chris@0 116 ->getViolations();
Chris@0 117 }
Chris@0 118
Chris@0 119 /**
Chris@0 120 * {@inheritdoc}
Chris@0 121 */
Chris@0 122 public function validateProperty($object, $propertyName, $groups = null)
Chris@0 123 {
Chris@0 124 return $this->startContext($object)
Chris@0 125 ->validateProperty($object, $propertyName, $groups)
Chris@0 126 ->getViolations();
Chris@0 127 }
Chris@0 128
Chris@0 129 /**
Chris@0 130 * {@inheritdoc}
Chris@0 131 */
Chris@0 132 public function validatePropertyValue($objectOrClass, $propertyName, $value, $groups = null)
Chris@0 133 {
Chris@0 134 // If a class name is passed, take $value as root
Chris@0 135 return $this->startContext(is_object($objectOrClass) ? $objectOrClass : $value)
Chris@0 136 ->validatePropertyValue($objectOrClass, $propertyName, $value, $groups)
Chris@0 137 ->getViolations();
Chris@0 138 }
Chris@0 139 }