diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php index 48e96c3cedb64..9bb05c8532f6e 100644 --- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php +++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php @@ -305,14 +305,14 @@ public function testFullyConfiguredValidationService() $container = $this->createContainerFromFile('full'); - $this->assertInstanceOf('Symfony\Component\Validator\ValidatorInterface', $container->get('validator')); + $this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $container->get('validator')); } public function testValidationService() { $container = $this->createContainerFromFile('validation_annotations'); - $this->assertInstanceOf('Symfony\Component\Validator\ValidatorInterface', $container->get('validator')); + $this->assertInstanceOf('Symfony\Component\Validator\Validator\ValidatorInterface', $container->get('validator')); } public function testAnnotations() diff --git a/src/Symfony/Component/Validator/Tests/ValidatorBuilderTest.php b/src/Symfony/Component/Validator/Tests/ValidatorBuilderTest.php index e717d9a521b1f..30f2ff65d86da 100644 --- a/src/Symfony/Component/Validator/Tests/ValidatorBuilderTest.php +++ b/src/Symfony/Component/Validator/Tests/ValidatorBuilderTest.php @@ -115,7 +115,7 @@ public function testLegacyDefaultApiVersion() $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED); // Legacy compatible implementation - $this->assertInstanceOf('Symfony\Component\Validator\Validator\LegacyValidator', $this->builder->getValidator()); + $this->assertInstanceOf('Symfony\Component\Validator\Validator\RecursiveValidator', $this->builder->getValidator()); } public function testSetApiVersion25() @@ -129,6 +129,6 @@ public function testLegacySetApiVersion24And25() $this->iniSet('error_reporting', -1 & ~E_USER_DEPRECATED); $this->assertSame($this->builder, $this->builder->setApiVersion(Validation::API_VERSION_2_5_BC)); - $this->assertInstanceOf('Symfony\Component\Validator\Validator\LegacyValidator', $this->builder->getValidator()); + $this->assertInstanceOf('Symfony\Component\Validator\Validator\RecursiveValidator', $this->builder->getValidator()); } } diff --git a/src/Symfony/Component/Validator/Validator/LegacyValidator.php b/src/Symfony/Component/Validator/Validator/LegacyValidator.php index 8995f2cfdd593..f73a79ef0e26a 100644 --- a/src/Symfony/Component/Validator/Validator/LegacyValidator.php +++ b/src/Symfony/Component/Validator/Validator/LegacyValidator.php @@ -11,9 +11,6 @@ namespace Symfony\Component\Validator\Validator; -use Symfony\Component\Validator\Constraint; -use Symfony\Component\Validator\Constraints\GroupSequence; -use Symfony\Component\Validator\Constraints\Valid; use Symfony\Component\Validator\ValidatorInterface as LegacyValidatorInterface; /** @@ -31,22 +28,9 @@ class LegacyValidator extends RecursiveValidator implements LegacyValidatorInter { public function validate($value, $groups = null, $traverse = false, $deep = false) { - $numArgs = func_num_args(); - - // Use new signature if constraints are given in the second argument - if (self::testConstraints($groups) && ($numArgs < 3 || 3 === $numArgs && self::testGroups($traverse))) { - // Rename to avoid total confusion ;) - $constraints = $groups; - $groups = $traverse; - - return parent::validate($value, $constraints, $groups); - } - trigger_error('The '.__METHOD__.' method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::validate method instead.', E_USER_DEPRECATED); - $constraint = new Valid(array('traverse' => $traverse, 'deep' => $deep)); - - return parent::validate($value, $constraint, $groups); + return parent::validate($value, false, $groups, $traverse, $deep); } public function validateValue($value, $constraints, $groups = null) @@ -62,14 +46,4 @@ public function getMetadataFactory() return $this->metadataFactory; } - - private static function testConstraints($constraints) - { - return null === $constraints || $constraints instanceof Constraint || (is_array($constraints) && current($constraints) instanceof Constraint); - } - - private static function testGroups($groups) - { - return null === $groups || is_string($groups) || $groups instanceof GroupSequence || (is_array($groups) && (is_string(current($groups)) || current($groups) instanceof GroupSequence)); - } } diff --git a/src/Symfony/Component/Validator/Validator/RecursiveValidator.php b/src/Symfony/Component/Validator/Validator/RecursiveValidator.php index ddf0850c1cf2a..7cfbc27fbf0d6 100644 --- a/src/Symfony/Component/Validator/Validator/RecursiveValidator.php +++ b/src/Symfony/Component/Validator/Validator/RecursiveValidator.php @@ -11,6 +11,9 @@ namespace Symfony\Component\Validator\Validator; +use Symfony\Component\Validator\Constraint; +use Symfony\Component\Validator\Constraints\GroupSequence; +use Symfony\Component\Validator\Constraints\Valid; use Symfony\Component\Validator\ConstraintValidatorFactoryInterface; use Symfony\Component\Validator\Context\ExecutionContextFactoryInterface; use Symfony\Component\Validator\Context\ExecutionContextInterface; @@ -112,6 +115,22 @@ public function hasMetadataFor($object) */ public function validate($value, $constraints = null, $groups = null) { + // The following code must be removed in 3.0 + $numArgs = func_num_args(); + if ($numArgs > 3) { + trigger_error('The '.__METHOD__.' method is deprecated in version 2.5 and will be removed in version 3.0. Use the Symfony\Component\Validator\Validator\ValidatorInterface::validate method instead.', E_USER_DEPRECATED); + $traverse = func_get_arg(3); + $deep = func_get_arg(4); + $constraints = new Valid(array('traverse' => $traverse, 'deep' => $deep)); + + if (self::testConstraints($groups)) { + if ((!$traverse && !$deep) || self::testGroups($traverse)) { + $constraints = $groups; + $groups = $traverse; + } + } + } + return $this->startContext($value) ->validate($value, $constraints, $groups) ->getViolations(); @@ -137,4 +156,22 @@ public function validatePropertyValue($objectOrClass, $propertyName, $value, $gr ->validatePropertyValue($objectOrClass, $propertyName, $value, $groups) ->getViolations(); } + + /** + * @internal + * @deprecated since version 2.5, to be removed in 3.0. + */ + private static function testConstraints($constraints) + { + return null === $constraints || $constraints instanceof Constraint || (is_array($constraints) && current($constraints) instanceof Constraint); + } + + /** + * @internal + * @deprecated since version 2.5, to be removed in 3.0. + */ + private static function testGroups($groups) + { + return null === $groups || is_string($groups) || $groups instanceof GroupSequence || (is_array($groups) && (is_string(current($groups)) || current($groups) instanceof GroupSequence)); + } } diff --git a/src/Symfony/Component/Validator/ValidatorBuilder.php b/src/Symfony/Component/Validator/ValidatorBuilder.php index e47d1f42a6822..6b85b956e075d 100644 --- a/src/Symfony/Component/Validator/ValidatorBuilder.php +++ b/src/Symfony/Component/Validator/ValidatorBuilder.php @@ -19,7 +19,6 @@ use Symfony\Component\Translation\IdentityTranslator; use Symfony\Component\Translation\TranslatorInterface; use Symfony\Component\Validator\Context\ExecutionContextFactory; -use Symfony\Component\Validator\Context\LegacyExecutionContextFactory; use Symfony\Component\Validator\Exception\InvalidArgumentException; use Symfony\Component\Validator\Exception\ValidatorException; use Symfony\Component\Validator\Mapping\Cache\CacheInterface; @@ -31,7 +30,6 @@ use Symfony\Component\Validator\Mapping\Loader\XmlFilesLoader; use Symfony\Component\Validator\Mapping\Loader\YamlFileLoader; use Symfony\Component\Validator\Mapping\Loader\YamlFilesLoader; -use Symfony\Component\Validator\Validator\LegacyValidator; use Symfony\Component\Validator\Validator\RecursiveValidator; /** @@ -393,14 +391,8 @@ public function getValidator() $translator->setLocale('en'); } - if (Validation::API_VERSION_2_5 === $apiVersion) { - $contextFactory = new ExecutionContextFactory($translator, $this->translationDomain); + $contextFactory = new ExecutionContextFactory($translator, $this->translationDomain); - return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers); - } - - $contextFactory = new LegacyExecutionContextFactory($metadataFactory, $translator, $this->translationDomain); - - return new LegacyValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers); + return new RecursiveValidator($contextFactory, $metadataFactory, $validatorFactory, $this->initializers); } }