Source of file ConstraintValidatorFactory.php
Size: 2,290 Bytes - Last Modified: 2013-07-17T08:22:21+02:00
/home/theseer/Downloads/Symfony/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Validator/ConstraintValidatorFactory.php
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 | <?php /* * This file is part of the Symfony package. * * (c) Fabien Potencier <fabien@symfony.com> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Bundle\FrameworkBundle\Validator; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\Validator\Constraint; use Symfony\Component\Validator\ConstraintValidatorFactoryInterface; use Symfony\Component\Validator\ConstraintValidator; /** * Uses a service container to create constraint validators. * * A constraint validator should be tagged as "validator.constraint_validator" * in the service container and include an "alias" attribute: * * <service id="some_doctrine_validator"> * <argument type="service" id="doctrine.orm.some_entity_manager" /> * <tag name="validator.constraint_validator" alias="some_alias" /> * </service> * * A constraint may then return this alias in its validatedBy() method: * * public function validatedBy() * { * return 'some_alias'; * } * * @author Kris Wallsmith <kris@symfony.com> */ class ConstraintValidatorFactory implements ConstraintValidatorFactoryInterface { protected $container; protected $validators; /** * Constructor. * * @param ContainerInterface $container The service container * @param array $validators An array of validators */ public function __construct(ContainerInterface $container, array $validators = array()) { $this->container = $container; $this->validators = $validators; } /** * Returns the validator for the supplied constraint. * * @param Constraint $constraint A constraint * * @return ConstraintValidator A validator for the supplied constraint */ public function getInstance(Constraint $constraint) { $name = $constraint->validatedBy(); if (!isset($this->validators[$name])) { $this->validators[$name] = new $name(); } elseif (is_string($this->validators[$name])) { $this->validators[$name] = $this->container->get($this->validators[$name]); } return $this->validators[$name]; } } |