* * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Validator\Mapping; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\Constraints\Traverse; use Symfony\Component\Validator\Constraints\Valid; use Symfony\Component\Validator\Exception\ConstraintDefinitionException; /** * A generic container of {@link Constraint} objects. * * This class supports serialization and cloning. * * @author Bernhard Schussek */ class GenericMetadata implements MetadataInterface { /** * @var Constraint[] * * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getConstraints()} and {@link findConstraints()} instead. */ public $constraints = array(); /** * @var array * * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link findConstraints()} instead. */ public $constraintsByGroup = array(); /** * The strategy for cascading objects. * * By default, objects are not cascaded. * * @var int * * @see CascadingStrategy * * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getCascadingStrategy()} instead. */ public $cascadingStrategy = CascadingStrategy::NONE; /** * The strategy for traversing traversable objects. * * By default, traversable objects are not traversed. * * @var int * * @see TraversalStrategy * * @internal This property is public in order to reduce the size of the * class' serialized representation. Do not access it. Use * {@link getTraversalStrategy()} instead. */ public $traversalStrategy = TraversalStrategy::NONE; /** * Returns the names of the properties that should be serialized. * * @return string[] */ public function __sleep() { return array( 'constraints', 'constraintsByGroup', 'cascadingStrategy', 'traversalStrategy', ); } /** * Clones this object. */ public function __clone() { $constraints = $this->constraints; $this->constraints = array(); $this->constraintsByGroup = array(); foreach ($constraints as $constraint) { $this->addConstraint(clone $constraint); } } /** * Adds a constraint. * * If the constraint {@link Valid} is added, the cascading strategy will be * changed to {@link CascadingStrategy::CASCADE}. Depending on the * $traverse property of that constraint, the traversal strategy * will be set to one of the following: * * - {@link TraversalStrategy::IMPLICIT} if $traverse is enabled * - {@link TraversalStrategy::NONE} if $traverse is disabled * * @return $this * * @throws ConstraintDefinitionException When trying to add the * {@link Traverse} constraint */ public function addConstraint(Constraint $constraint) { if ($constraint instanceof Traverse) { throw new ConstraintDefinitionException(sprintf( 'The constraint "%s" can only be put on classes. Please use '. '"Symfony\Component\Validator\Constraints\Valid" instead.', get_class($constraint) )); } if ($constraint instanceof Valid && null === $constraint->groups) { $this->cascadingStrategy = CascadingStrategy::CASCADE; if ($constraint->traverse) { $this->traversalStrategy = TraversalStrategy::IMPLICIT; } else { $this->traversalStrategy = TraversalStrategy::NONE; } return $this; } $this->constraints[] = $constraint; foreach ($constraint->groups as $group) { $this->constraintsByGroup[$group][] = $constraint; } return $this; } /** * Adds an list of constraints. * * @param Constraint[] $constraints The constraints to add * * @return $this */ public function addConstraints(array $constraints) { foreach ($constraints as $constraint) { $this->addConstraint($constraint); } return $this; } /** * {@inheritdoc} */ public function getConstraints() { return $this->constraints; } /** * Returns whether this element has any constraints. * * @return bool */ public function hasConstraints() { return count($this->constraints) > 0; } /** * {@inheritdoc} * * Aware of the global group (* group). */ public function findConstraints($group) { return isset($this->constraintsByGroup[$group]) ? $this->constraintsByGroup[$group] : array(); } /** * {@inheritdoc} */ public function getCascadingStrategy() { return $this->cascadingStrategy; } /** * {@inheritdoc} */ public function getTraversalStrategy() { return $this->traversalStrategy; } } __halt_compiler();----SIGNATURE:----KzQZaMr8WaJBmcKxlT/N0PVCPjcqOS/f4X6UPptoRq+mfPKWv8cQMw7D17NZ4j22um14s+C+35qGMQ8MZPh6sNb1Xlxx/AiNqzNK590lhlcLiTDHWu9sbjJL1pbDhBy9HMvChWCDJQpylFnXObOixls9RFeFnn/lnSDZdDJ/I/DB0ttotsc37w2wsFE7cfLRxNpfw/J3HxEqrdloFQoFO95H2gtHWocQynl64/FSEVoXike8wnfyeKZB1Q7Vsg9FRaMVazMCzxO0YkfXDPDaHuILNNceDP7FfgN7pKW2NKPZI5/qEiBoDwwyUMG3lxNduFSV5IuVLLaUspYZB0NA1My/43kolX6wGA9kCQORIb7U8v+dRi5giz29HB4zF1dbBuJ1z8ICMflTYs/a9/yYxLMDxTmm3ITJFqGxiblkIY+IklDF4gBom4DM8H3wthbT7rRVMFMDrS6tJjHbRUW0S7hKC5+sBGpWqe05Cb486EPuPcEZLPEPId53tYycCSgT8JmnHTtUcsN2rY6jDt1v9F6VosfDkAv9IjElyk4hWoGiE8a3Wk/i+lx8ZHixcTYn2bIUiiTO5RQDnqEpmkNsLNwCaPq7Gs/9Klj8BtEIeSSqSENPyNfA0+LnoBDSn/xV462wA7WR21MYL2iFpMjqgb3wypOQQ490pwQ8WezeqsY=----ATTACHMENT:----MjcwNTY1NTI4NDcwODkwNSA2MDg2NjAxODU1NDIwMDYxIDYzOTIzMjM3MTM5OTc2NTI=