8000 [DependencyInjection] Allow trimming service parameters value in XML … · symfony/symfony@35ffcde · GitHub
[go: up one dir, main page]

Skip to content

Commit 35ffcde

Browse files
[DependencyInjection] Allow trimming service parameters value in XML configuration files
1 parent b9eef0f commit 35ffcde

File tree

5 files changed

+17
-4
lines changed

5 files changed

+17
-4
lines changed

src/Symfony/Component/DependencyInjection/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ CHANGELOG
1111
* Deprecate undefined and numeric keys with `service_locator` config
1212
* Fail if Target attribute does not exist during compilation
1313
* Enable deprecating parameters with `ContainerBuilder::deprecateParameter()`
14+
* Allow to trim XML service parameters value by using `trim-value="true 8000 "` attribute
1415

1516
6.2
1617
---

src/Symfony/Component/DependencyInjection/Loader/XmlFileLoader.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,7 @@ private function getArgumentsAsPhp(\DOMElement $node, string $name, string $file
478478
$key = $arg->getAttribute('key');
479479
}
480480

481+
$trim = $arg->hasAttribute('trim-value') && XmlUtils::phpize($arg->getAttribute('trim-value'));
481482
$onInvalid = $arg->getAttribute('on-invalid');
482483
$invalidBehavior = ContainerInterface::EXCEPTION_ON_INVALID_REFERENCE;
483484
if ('ignore' == $onInvalid) {
@@ -550,7 +551,7 @@ private function getArgumentsAsPhp(\DOMElement $node, string $name, string $file
550551
$excludes = [$arg->getAttribute('exclude')];
551552
}
552553

553-
$arguments[$key] = new TaggedIteratorArgument($arg->getAttribute('tag'), $arg->getAttribute('index-by') ?: null, $arg->getAttribute('default-index-method') ?: null, $forLocator, $arg->getAttribute('default-priority-method') ?: null, $excludes, $arg->getAttribute('exclude-self') ?: true);
554+
$arguments[$key] = new TaggedIteratorArgument($arg->getAttribute('tag'), $arg->getAttribute('index-by') ?: null, $arg->getAttribute('default-index-method') ?: null, $forLocator, $arg->getAttribute('default-priority-method') ?: null, $excludes, !$arg->hasAttribute('exclude-self') || XmlUtils::phpize($arg->getAttribute('exclude-self')));
554555

555556
if ($forLocator) {
556557
$arguments[$key] = new ServiceLocatorArgument($arguments[$key]);
@@ -566,13 +567,13 @@ private function getArgumentsAsPhp(\DOMElement $node, string $name, string $file
566567
$arguments[$key] = new AbstractArgument($arg->nodeValue);
567568
break;
568569
case 'string':
569-
$arguments[$key] = $arg->nodeValue;
570+
$arguments[$key] = $trim ? trim($arg->nodeValue) : $arg->nodeValue;
570571
break;
571572
case 'constant':
572573
$arguments[$key] = \constant(trim($arg->nodeValue));
573574
break;
574575
default:
575-
$arguments[$key] = XmlUtils::phpize($arg->nodeValue);
576+
$arguments[$key] = XmlUtils::phpize($trim ? trim($arg->nodeValue) : $arg->nodeValue);
576577
}
577578
}
578579

src/Symfony/Component/DependencyInjection/Loader/schema/dic/services/services-1.0.xsd

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@
258258
<xsd:attribute name="id" type="xsd:string" />
259259
<xsd:attribute name="key" type="xsd:string" />
260260
<xsd:attribute name="on-invalid" type="invalid_sequence" />
261+
<xsd:attribute name="trim-value" type="boolean" />
261262
</xsd:complexType>
262263

263264
<xsd:complexType name="property" mixed="true">
@@ -302,7 +303,7 @@
302303
<xsd:attribute name="default-index-method" type="xsd:string" />
303304
<xsd:attribute name="default-priority-method" type="xsd:string" />
304305
<xsd:attribute name="exclude" type="xsd:string" />
305-
<xsd:attribute name="exclude-self" type="xsd:boolean" />
306+
<xsd:attribute name="exclude-self" type="boolean" />
306307
</xsd:complexType>
307308

308309
<xsd:complexType name="call">

src/Symfony/Component/DependencyInjection/Tests/Fixtures/xml/services2.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@
1818
<parameter key="float">1.3</parameter>
1919
<parameter>1000.3</parameter>
2020
<parameter>a string</parameter>
21+
<parameter trim-value="false"> a string not trimmed </parameter>
22+
<parameter trim-value="true">
23+
a trimmed string
24+
</parameter>
25+
<parameter type="string" trim-value="true">
26+
an explicit trimmed string
27+
</parameter>
2128
<parameter type="collection">
2229
<parameter>foo</parameter>
2330
<parameter>bar</parameter>

src/Symfony/Component/DependencyInjection/Tests/Loader/XmlFileLoaderTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,9 @@ public function testLoadParameters()
140140
'float' => 1.3,
141141
1000.3,
142142
'a string',
143+
' a string not trimmed ',
144+
'a trimmed string',
145+
'an explicit trimmed string',
143146
['foo', 'bar'],
144147
],
145148
'mixedcase' => ['MixedCaseKey' => 'value'],

0 commit comments

Comments
 (0)
0