diff --git a/src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php b/src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php index cde956eed3..63fd66eadd 100644 --- a/src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php +++ b/src/Symfony/Bridge/Doctrine/Tests/Validator/DoctrineLoaderTest.php @@ -36,7 +36,7 @@ class DoctrineLoaderTest extends TestCase $validator = Validation::createValidatorBuilder() ->enableAnnotationMapping() - ->addLoader(new DoctrineLoader(DoctrineTestHelper::createTestEntityManager())) + ->addLoader(new DoctrineLoader(DoctrineTestHelper::createTestEntityManager(), '{^Symfony\\\\Bridge\\\\Doctrine\\\\Tests\\\\Fixtures\\\\DoctrineLoaderEntity$}')) ->getValidator() ; @@ -111,7 +111,7 @@ class DoctrineLoaderTest extends TestCase public function regexpProvider() { return [ - [true, null], + [false, null], [true, '{^'.preg_quote(DoctrineLoaderEntity::class).'$|^'.preg_quote(Entity::class).'$}'], [false, '{^'.preg_quote(Entity::class).'$}'], ]; diff --git a/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php b/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php index 376670e8e4..9e3c32aa62 100644 --- a/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php +++ b/src/Symfony/Bridge/Doctrine/Validator/DoctrineLoader.php @@ -42,7 +42,7 @@ final class DoctrineLoader implements LoaderInterface public function loadClassMetadata(ClassMetadata $metadata): bool { $className = $metadata->getClassName(); - if (null !== $this->classValidatorRegexp && !preg_match($this->classValidatorRegexp, $className)) { + if (null === $this->classValidatorRegexp || !preg_match($this->classValidatorRegexp, $className)) { return false; } diff --git a/src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php b/src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php index fc110bbbe6..177f42e655 100644 --- a/src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php +++ b/src/Symfony/Component/Validator/DependencyInjection/AddAutoMappingConfigurationPass.php @@ -70,8 +70,12 @@ class AddAutoMappingConfigurationPass implements CompilerPassInterface /** * Builds a regexp to check if a class is auto-mapped. */ - private function getRegexp(array $patterns): string + private function getRegexp(array $patterns): ?string { + if (!$patterns) { + return null; + } + $regexps = []; foreach ($patterns as $pattern) { // Escape namespace diff --git a/src/Symfony/Component/Validator/Tests/DependencyInjection/AddAutoMappingConfigurationPassTest.php b/src/Symfony/Component/Validator/Tests/DependencyInjection/AddAutoMappingConfigurationPassTest.php index b4b5699760..bce1101ef5 100644 --- a/src/Symfony/Component/Validator/Tests/DependencyInjection/AddAutoMappingConfigurationPassTest.php +++ b/src/Symfony/Component/Validator/Tests/DependencyInjection/AddAutoMappingConfigurationPassTest.php @@ -70,4 +70,17 @@ class AddAutoMappingConfigurationPassTest extends TestCase ['Symfony\Component\Validator\Tests\Fixtures\\**', ['trailing_double_star'], '{^App\\\\|^Symfony\\\\Component\\\\Validator\\\\Tests\\\\Fixtures\\\\.*?$}'], ]; } + + public function testDoNotMapAllClassesWhenConfigIsEmpty() + { + $container = new ContainerBuilder(); + $container->setParameter('validator.auto_mapping', []); + + $container->register('validator.builder', ValidatorBuilder::class); + $container->register('loader')->addTag('validator.auto_mapper'); + + (new AddAutoMappingConfigurationPass())->process($container); + + $this->assertNull($container->getDefinition('loader')->getArgument('$classValidatorRegexp')); + } }