Skip to content

Commit e6694e6

Browse files
[Config] Improve casting config nodes to array
1 parent 7ebccf7 commit e6694e6

File tree

6 files changed

+13
-29
lines changed

6 files changed

+13
-29
lines changed

src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public function getConfigTreeBuilder(): TreeBuilder
121121
->prototype('scalar')->end()
122122
->end()
123123
->arrayNode('trusted_hosts')
124-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
124+
->beforeNormalization()->castToArray()->end()
125125
->prototype('scalar')->end()
126126
->end()
127127
->scalarNode('trusted_proxies')->end()
@@ -416,10 +416,7 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode): void
416416
->end()
417417
->end()
418418
->arrayNode('supports')
419-
->beforeNormalization()
420-
->ifString()
421-
->then(fn ($v) => [$v])
422-
->end()
419+
->beforeNormalization()->castToArray()->end()
423420
->prototype('scalar')
424421
->cannotBeEmpty()
425422
->validate()
@@ -550,20 +547,14 @@ private function addWorkflowSection(ArrayNodeDefinition $rootNode): void
550547
->example('is_fully_authenticated() and is_granted(\'ROLE_JOURNALIST\') and subject.getTitle() == \'My first article\'')
551548
->end()
552549
->arrayNode('from')
553-
->beforeNormalization()
554-
->ifString()
555-
->then(fn ($v) => [$v])
556-
->end()
550+
->beforeNormalization()->castToArray()->end()
557551
->requiresAtLeastOneElement()
558552
->prototype('scalar')
559553
->cannotBeEmpty()
560554
->end()
561555
->end()
562556
->arrayNode('to')
563-
->beforeNormalization()
564-
->ifString()
565-
->then(fn ($v) => [$v])
566-
->end()
557+
->beforeNormalization()->castToArray()->end()
567558
->requiresAtLeastOneElement()
568559
->prototype('scalar')
569560
->cannotBeEmpty()
@@ -934,7 +925,7 @@ private function addTranslatorSection(ArrayNodeDefinition $rootNode, callable $e
934925
->children()
935926
->arrayNode('fallbacks')
936927
->info('Defaults to the value of "default_locale".')
937-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
928+
->beforeNormalization()->castToArray()->end()
938929
->prototype('scalar')->end()
939930
->defaultValue([])
940931
->end()
@@ -1420,7 +1411,7 @@ private function addLockSection(ArrayNodeDefinition $rootNode, callable $enableI
14201411
->end()
14211412
->prototype('array')
14221413
->performNoDeepMerging()
1423-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
1414+
->beforeNormalization()->castToArray()->end()
14241415
->prototype('scalar')->end()
14251416
->end()
14261417
->end()
@@ -2180,7 +2171,7 @@ private function addNotifierSection(ArrayNodeDefinition $rootNode, callable $ena
21802171
->arrayNode('channel_policy')
21812172
->useAttributeAsKey('name')
21822173
->prototype('array')
2183-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
2174+
->beforeNormalization()->castToArray()->end()
21842175
->prototype('scalar')->end()
21852176
->end()
21862177
->end()

src/Symfony/Bundle/SecurityBundle/DependencyInjection/MainConfiguration.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ private function addAccessControlSection(ArrayNodeDefinition $rootNode): void
145145
->scalarNode('host')->defaultNull()->end()
146146
->integerNode('port')->defaultNull()->end()
147147
->arrayNode('ips')
148-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
148+
->beforeNormalization()->castToArray()->end()
149149
->prototype('scalar')->end()
150150
->end()
151151
->arrayNode('attributes')

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/AccessTokenFactory.php

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,7 @@ public function addConfiguration(NodeDefinition $node): void
4848
->scalarNode('realm')->defaultNull()->end()
4949
->arrayNode('token_extractors')
5050
->fixXmlConfig('token_extractors')
51-
->beforeNormalization()
52-
->ifString()
53-
->then(fn ($v) => [$v])
54-
->end()
51+
->beforeNormalization()->castToArray()->end()
5552
->cannotBeEmpty()
5653
->defaultValue([
5754
'security.access_token_extractor.header',

src/Symfony/Bundle/SecurityBundle/DependencyInjection/Security/Factory/RememberMeFactory.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,7 @@ public function addConfiguration(NodeDefinition $node): void
137137
->end()
138138
->scalarNode('service')->end()
139139
->arrayNode('user_providers')
140-
->beforeNormalization()
141-
->ifString()->then(fn ($v) => [$v])
142-
->end()
140+
->beforeNormalization()->castToArray()->end()
143141
->prototype('scalar')->end()
144142
->end()
145143
->booleanNode('catch_exceptions')->defaultTrue()->end()

src/Symfony/Component/Config/Definition/Builder/ExprBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public function ifTrue(\Closure $closure = null): static
7777
public function ifString(): static
7878
{
7979
$this->ifPart = \is_string(...);
80-
$this->allowedTypes = self::TYPE_STRING;
80+
$this->allowedTypes = self::TYPE_STRING; // XXX why is this used by ConfigBuilderGenerator instead of the prototype?
8181
8282
return $this;
8383
}

src/Symfony/Component/Config/Tests/Builder/Fixtures/ScalarNormalizedTypes.php

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,13 @@ public function getConfigTreeBuilder(): TreeBuilder
2323
$rootNode
2424
->children()
2525
->arrayNode('simple_array')
26-
->beforeNormalization()->ifString()->then(fn ($v) => [$v])->end()
26+
->beforeNormalization()->castToArray()->end()
2727
->prototype('scalar')->end()
2828
->end()
2929
->arrayNode('keyed_array')
3030
->useAttributeAsKey('name')
3131
->prototype('array')
32-
->beforeNormalization()
33-
->ifString()->then(fn ($v) => [$v])
34-
->end()
32+
->beforeNormalization()->castToArray()->end()
3533
->prototype('scalar')->end()
3634
->end()
3735
->end()

0 commit comments

Comments
 (0)