From 46de8900f036c08e2ff6342b30a6876dc07a5b93 Mon Sep 17 00:00:00 2001 From: simivar Date: Thu, 11 Jun 2020 16:36:13 +0200 Subject: [PATCH] [FrameworkBundle] Move Validator configuration to PHP --- .../FrameworkExtension.php | 8 +- .../Resources/config/validator.php | 98 +++++++++++++++++++ .../Resources/config/validator.xml | 74 -------------- .../Resources/config/validator_debug.php | 38 +++++++ .../Resources/config/validator_debug.xml | 21 ---- 5 files changed, 140 insertions(+), 99 deletions(-) create mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.php delete mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml create mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.php delete mode 100644 src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.xml diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php index d435e8cf8d..d95c50bdb5 100644 --- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php +++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php @@ -364,7 +364,7 @@ class FrameworkExtension extends Extension } $propertyInfoEnabled = $this->isConfigEnabled($container, $config['property_info']); - $this->registerValidationConfiguration($config['validation'], $container, $loader, $propertyInfoEnabled); + $this->registerValidationConfiguration($config['validation'], $container, $phpLoader, $propertyInfoEnabled); $this->registerEsiConfiguration($config['esi'], $container, $loader); $this->registerSsiConfiguration($config['ssi'], $container, $phpLoader); $this->registerFragmentsConfiguration($config['fragments'], $container, $phpLoader); @@ -586,7 +586,7 @@ class FrameworkExtension extends Extension } if ($this->validatorConfigEnabled) { - $loader->load('validator_debug.xml'); + $phpLoader->load('validator_debug.php'); } if ($this->translationConfigEnabled) { @@ -1195,7 +1195,7 @@ class FrameworkExtension extends Extension } } - private function registerValidationConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, bool $propertyInfoEnabled) + private function registerValidationConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, bool $propertyInfoEnabled) { if (!$this->validatorConfigEnabled = $this->isConfigEnabled($container, $config)) { return; @@ -1209,7 +1209,7 @@ class FrameworkExtension extends Extension $config['email_validation_mode'] = 'loose'; } - $loader->load('validator.xml'); + $loader->load('validator.php'); $validatorBuilder = $container->getDefinition('validator.builder'); diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.php new file mode 100644 index 0000000000..449ae9bc7a --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.php @@ -0,0 +1,98 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + +use Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer; +use Symfony\Component\Cache\Adapter\PhpArrayAdapter; +use Symfony\Component\Validator\Constraints\EmailValidator; +use Symfony\Component\Validator\Constraints\ExpressionValidator; +use Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator; +use Symfony\Component\Validator\ContainerConstraintValidatorFactory; +use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader; +use Symfony\Component\Validator\Validation; +use Symfony\Component\Validator\Validator\ValidatorInterface; +use Symfony\Component\Validator\ValidatorBuilder; + +return static function (ContainerConfigurator $container) { + $container->parameters() + ->set('validator.mapping.cache.file', param('kernel.cache_dir').'/validation.php'); + + $container->services() + ->set('validator', ValidatorInterface::class) + ->public() + ->factory([service('validator.builder'), 'getValidator']) + ->alias(ValidatorInterface::class, 'validator') + + ->set('validator.builder', ValidatorBuilder::class) + ->factory([Validation::class, 'createValidatorBuilder']) + ->call('setConstraintValidatorFactory', [ + service('validator.validator_factory'), + ]) + ->call('setTranslator', [ + service('translator')->ignoreOnInvalid(), + ]) + ->call('setTranslationDomain', [ + param('validator.translation_domain'), + ]) + ->alias('validator.mapping.class_metadata_factory', 'validator') + + ->set('validator.mapping.cache_warmer', ValidatorCacheWarmer::class) + ->args([ + service('validator.builder'), + param('validator.mapping.cache.file'), + ]) + ->tag('kernel.cache_warmer') + + ->set('validator.mapping.cache.adapter', PhpArrayAdapter::class) + ->factory([PhpArrayAdapter::class, 'create']) + ->args([ + param('validator.mapping.cache.file'), + service('cache.validator'), + ]) + + ->set('validator.validator_factory', ContainerConstraintValidatorFactory::class) + ->args([ + abstract_arg('Constraint validators locator'), + ]) + + ->set('validator.expression', ExpressionValidator::class) + ->tag('validator.constraint_validator', [ + 'alias' => 'validator.expression', + ]) + + ->set('validator.email', EmailValidator::class) + ->args([ + abstract_arg('Default mode'), + ]) + ->tag('validator.constraint_validator', [ + 'alias' => EmailValidator::class, + ]) + + ->set('validator.not_compromised_password', NotCompromisedPasswordValidator::class) + ->args([ + service('http_client')->nullOnInvalid(), + param('kernel.charset'), + false, + ]) + ->tag('validator.constraint_validator', [ + 'alias' => NotCompromisedPasswordValidator::class, + ]) + + ->set('validator.property_info_loader', PropertyInfoLoader::class) + ->args([ + service('property_info'), + service('property_info'), + service('property_info'), + ]) + ->tag('validator.auto_mapper') + ; +}; diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml deleted file mode 100644 index 7c10470d51..0000000000 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - %kernel.cache_dir%/validation.php - - - - - - - - - - - - - - - - - - - - %validator.translation_domain% - - - - - - - - %validator.mapping.cache.file% - - - - - - %validator.mapping.cache.file% - - - - - - - - - - - - - - - - - - - %kernel.charset% - false - - - - - - - - - - - - diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.php b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.php new file mode 100644 index 0000000000..e9fe441140 --- /dev/null +++ b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.php @@ -0,0 +1,38 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\DependencyInjection\Loader\Configurator; + +use Symfony\Component\Validator\DataCollector\ValidatorDataCollector; +use Symfony\Component\Validator\Validator\TraceableValidator; + +return static function (ContainerConfigurator $container) { + $container->services() + ->set('debug.validator', TraceableValidator::class) + ->decorate('validator', null, 255) + ->args([ + service('debug.validator.inner'), + ]) + ->tag('kernel.reset', [ + 'method' => 'reset', + ]) + + ->set('data_collector.validator', ValidatorDataCollector::class) + ->args([ + service('debug.validator'), + ]) + ->tag('data_collector', [ + 'template' => '@WebProfiler/Collector/validator.html.twig', + 'id' => 'validator', + 'priority' => 320, + ]) + ; +}; diff --git a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.xml b/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.xml deleted file mode 100644 index 939c55553c..0000000000 --- a/src/Symfony/Bundle/FrameworkBundle/Resources/config/validator_debug.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - - - - - - - - - - - -