Skip to content

Commit 74ca708

Browse files
committed
minor #37222 [Validator][FrameworkBundle] Move configurations from XML to PHP (simivar)
This PR was merged into the 5.2-dev branch. Discussion ---------- [Validator][FrameworkBundle] Move configurations from XML to PHP | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | no <!-- please update src/**/CHANGELOG.md files --> | Deprecations? | no <!-- please update UPGRADE-*.md and src/**/CHANGELOG.md files --> | Tickets | Part of #37186 <!-- prefix each issue number with "Fix #", if any --> | License | MIT <!-- Replace this notice by a short README for your feature/bugfix. This will help people understand your PR and can be used as a start for the documentation. Additionally (see https://symfony.com/releases): - Always add tests and ensure they pass. - Never break backward compatibility (see https://symfony.com/bc). - Bug fixes must be submitted against the lowest maintained branch where they apply (lowest branches are regularly merged to upper ones so they get the fixes too.) - Features and deprecations must be submitted against branch master. --> Move `src/Symfony/Bundle/FrameworkBundle/Resources/config/validator*.xml` configurations to PHP Commits ------- 46de8900f0 [FrameworkBundle] Move Validator configuration to PHP
2 parents 26f5195 + 8bae898 commit 74ca708

File tree

5 files changed

+140
-99
lines changed

5 files changed

+140
-99
lines changed

DependencyInjection/FrameworkExtension.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ public function load(array $configs, ContainerBuilder $container)
364364
}
365365

366366
$propertyInfoEnabled = $this->isConfigEnabled($container, $config['property_info']);
367-
$this->registerValidationConfiguration($config['validation'], $container, $loader, $propertyInfoEnabled);
367+
$this->registerValidationConfiguration($config['validation'], $container, $phpLoader, $propertyInfoEnabled);
368368
$this->registerEsiConfiguration($config['esi'], $container, $loader);
369369
$this->registerSsiConfiguration($config['ssi'], $container, $phpLoader);
370370
$this->registerFragmentsConfiguration($config['fragments'], $container, $phpLoader);
@@ -586,7 +586,7 @@ private function registerProfilerConfiguration(array $config, ContainerBuilder $
586586
}
587587

588588
if ($this->validatorConfigEnabled) {
589-
$loader->load('validator_debug.xml');
589+
$phpLoader->load('validator_debug.php');
590590
}
591591

592592
if ($this->translationConfigEnabled) {
@@ -1195,7 +1195,7 @@ private function registerTranslatorConfiguration(array $config, ContainerBuilder
11951195
}
11961196
}
11971197

1198-
private function registerValidationConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader, bool $propertyInfoEnabled)
1198+
private function registerValidationConfiguration(array $config, ContainerBuilder $container, PhpFileLoader $loader, bool $propertyInfoEnabled)
11991199
{
12001200
if (!$this->validatorConfigEnabled = $this->isConfigEnabled($container, $config)) {
12011201
return;
@@ -1209,7 +1209,7 @@ private function registerValidationConfiguration(array $config, ContainerBuilder
12091209
$config['email_validation_mode'] = 'loose';
12101210
}
12111211

1212-
$loader->load('validator.xml');
1212+
$loader->load('validator.php');
12131213

12141214
$validatorBuilder = $container->getDefinition('validator.builder');
12151215

Resources/config/validator.php

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Symfony\Bundle\FrameworkBundle\CacheWarmer\ValidatorCacheWarmer;
15+
use Symfony\Component\Cache\Adapter\PhpArrayAdapter;
16+
use Symfony\Component\Validator\Constraints\EmailValidator;
17+
use Symfony\Component\Validator\Constraints\ExpressionValidator;
18+
use Symfony\Component\Validator\Constraints\NotCompromisedPasswordValidator;
19+
use Symfony\Component\Validator\ContainerConstraintValidatorFactory;
20+
use Symfony\Component\Validator\Mapping\Loader\PropertyInfoLoader;
21+
use Symfony\Component\Validator\Validation;
22+
use Symfony\Component\Validator\Validator\ValidatorInterface;
23+
use Symfony\Component\Validator\ValidatorBuilder;
24+
25+
return static function (ContainerConfigurator $container) {
26+
$container->parameters()
27+
->set('validator.mapping.cache.file', param('kernel.cache_dir').'/validation.php');
28+
29+
$container->services()
30+
->set('validator', ValidatorInterface::class)
31+
->public()
32+
->factory([service('validator.builder'), 'getValidator'])
33+
->alias(ValidatorInterface::class, 'validator')
34+
35+
->set('validator.builder', ValidatorBuilder::class)
36+
->factory([Validation::class, 'createValidatorBuilder'])
37+
->call('setConstraintValidatorFactory', [
38+
service('validator.validator_factory'),
39+
])
40+
->call('setTranslator', [
41+
service('translator')->ignoreOnInvalid(),
42+
])
43+
->call('setTranslationDomain', [
44+
param('validator.translation_domain'),
45+
])
46+
->alias('validator.mapping.class_metadata_factory', 'validator')
47+
48+
->set('validator.mapping.cache_warmer', ValidatorCacheWarmer::class)
49+
->args([
50+
service('validator.builder'),
51+
param('validator.mapping.cache.file'),
52+
])
53+
->tag('kernel.cache_warmer')
54+
55+
->set('validator.mapping.cache.adapter', PhpArrayAdapter::class)
56+
->factory([PhpArrayAdapter::class, 'create'])
57+
->args([
58+
param('validator.mapping.cache.file'),
59+
service('cache.validator'),
60+
])
61+
62+
->set('validator.validator_factory', ContainerConstraintValidatorFactory::class)
63+
->args([
64+
abstract_arg('Constraint validators locator'),
65+
])
66+
67+
->set('validator.expression', ExpressionValidator::class)
68+
->tag('validator.constraint_validator', [
69+
'alias' => 'validator.expression',
70+
])
71+
72+
->set('validator.email', EmailValidator::class)
73+
->args([
74+
abstract_arg('Default mode'),
75+
])
76+
->tag('validator.constraint_validator', [
77+
'alias' => EmailValidator::class,
78+
])
79+
80+
->set('validator.not_compromised_password', NotCompromisedPasswordValidator::class)
81+
->args([
82+
service('http_client')->nullOnInvalid(),
83+
param('kernel.charset'),
84+
false,
85+
])
86+
->tag('validator.constraint_validator', [
87+
'alias' => NotCompromisedPasswordValidator::class,
88+
])
89+
90+
->set('validator.property_info_loader', PropertyInfoLoader::class)
91+
->args([
92+
service('property_info'),
93+
service('property_info'),
94+
service('property_info'),
95+
])
96+
->tag('validator.auto_mapper')
97+
;
98+
};

Resources/config/validator.xml

Lines changed: 0 additions & 74 deletions
This file was deleted.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
/*
4+
* This file is part of the Symfony package.
5+
*
6+
* (c) Fabien Potencier <fabien@symfony.com>
7+
*
8+
* For the full copyright and license information, please view the LICENSE
9+
* file that was distributed with this source code.
10+
*/
11+
12+
namespace Symfony\Component\DependencyInjection\Loader\Configurator;
13+
14+
use Symfony\Component\Validator\DataCollector\ValidatorDataCollector;
15+
use Symfony\Component\Validator\Validator\TraceableValidator;
16+
17+
return static function (ContainerConfigurator $container) {
18+
$container->services()
19+
->set('debug.validator', TraceableValidator::class)
20+
->decorate('validator', null, 255)
21+
->args([
22+
service('debug.validator.inner'),
23+
])
24+
->tag('kernel.reset', [
25+
'method' => 'reset',
26+
])
27+
28+
->set('data_collector.validator', ValidatorDataCollector::class)
29+
->args([
30+
service('debug.validator'),
31+
])
32+
->tag('data_collector', [
33+
'template' => '@WebProfiler/Collector/validator.html.twig',
34+
'id' => 'validator',
35+
'priority' => 320,
36+
])
37+
;
38+
};

Resources/config/validator_debug.xml

Lines changed: 0 additions & 21 deletions
This file was deleted.

0 commit comments

Comments
 (0)