Skip to content

Commit e085173

Browse files
committed
bug #34716 [DependencyInjection] fix dumping number-like string parameters (xabbuh)
This PR was merged into the 3.4 branch. Discussion ---------- [DependencyInjection] fix dumping number-like string parameters | Q | A | ------------- | --- | Branch? | 3.4 | Bug fix? | yes | New feature? | no | Deprecations? | no | Tickets | Fix #34689 | License | MIT | Doc PR | Commits ------- a1ce0ed fix dumping number-like string parameters
2 parents 14a7ac8 + a1ce0ed commit e085173

File tree

5 files changed

+49
-0
lines changed

5 files changed

+49
-0
lines changed

src/Symfony/Component/DependencyInjection/Dumper/XmlDumper.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,11 @@ private function convertParameters(array $parameters, $type, \DOMElement $parent
304304
if (\in_array($value, ['null', 'true', 'false'], true)) {
305305
$element->setAttribute('type', 'string');
306306
}
307+
308+
if (\is_string($value) && (is_numeric($value) || preg_match('/^0b[01]*$/', $value) || preg_match('/^0x[0-9a-f]++$/i', $value))) {
309+
$element->setAttribute('type', 'string');
310+
}
311+
307312
$text = $this->document->createTextNode(self::phpToXml($value));
308313
$element->appendChild($text);
309314
}

src/Symfony/Component/DependencyInjection/Tests/Fixtures/containers/container8.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,17 @@
99
'bar' => 'foo is %%foo bar',
1010
'escape' => '@escapeme',
1111
'values' => [true, false, null, 0, 1000.3, 'true', 'false', 'null'],
12+
'null string' => 'null',
13+
'string of digits' => '123',
14+
'string of digits prefixed with minus character' => '-123',
15+
'true string' => 'true',
16+
'false string' => 'false',
17+
'binary number string' => '0b0110',
18+
'numeric string' => '-1.2E2',
19+
'hexadecimal number string' => '0xFF',
20+
'float string' => '10100.1',
21+
'positive float string' => '+10100.1',
22+
'negative float string' => '-10100.1',
1223
]));
1324

1425
return $container;

src/Symfony/Component/DependencyInjection/Tests/Fixtures/php/services8.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,17 @@ protected function getDefaultParameters()
151151
6 => 'false',
152152
7 => 'null',
153153
],
154+
'null string' => 'null',
155+
'string of digits' => '123',
156+
'string of digits prefixed with minus character' => '-123',
157+
'true string' => 'true',
158+
'false string' => 'false',
159+
'binary number string' => '0b0110',
160+
'numeric string' => '-1.2E2',
161+
'hexadecimal number string' => '0xFF',
162+
'float string' => '10100.1',
163+
'positive float string' => '+10100.1',
164+
'negative float string' => '-10100.1',
154165
];
155166
}
156167
}

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

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,17 @@
1818
<parameter type="string">false</parameter>
1919
<parameter type="string">null</parameter>
2020
</parameter>
21+
<parameter key="null string" type="string">null</parameter>
22+
<parameter key="string of digits" type="string">123</parameter>
23+
<parameter key="string of digits prefixed with minus character" type="string">-123</parameter>
24+
<parameter key="true string" type="string">true</parameter>
25+
<parameter key="false string" type="string">false</parameter>
26+
<parameter key="binary number string" type="string">0b0110</parameter>
27+
<parameter key="numeric string" type="string">-1.2E2</parameter>
28+
<parameter key="hexadecimal number string" type="string">0xFF</parameter>
29+
<parameter key="float string" type="string">10100.1</parameter>
30+
<parameter key="positive float string" type="string">+10100.1</parameter>
31+
<parameter key="negative float string" type="string">-10100.1</parameter>
2132
</parameters>
2233
<services>
2334
<service id="service_container" class="Symfony\Component\DependencyInjection\ContainerInterface" public="true" synthetic="true"/>

src/Symfony/Component/DependencyInjection/Tests/Fixtures/yaml/services8.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,17 @@ parameters:
44
bar: 'foo is %%foo bar'
55
escape: '@@escapeme'
66
values: [true, false, null, 0, 1000.3, 'true', 'false', 'null']
7+
null string: 'null'
8+
string of digits: '123'
9+
string of digits prefixed with minus character: '-123'
10+
true string: 'true'
11+
false string: 'false'
12+
binary number string: '0b0110'
13+
numeric string: '-1.2E2'
14+
hexadecimal number string: '0xFF'
15+
float string: '10100.1'
16+
positive float string: '+10100.1'
17+
negative float string: '-10100.1'
718

819
services:
920
service_container:

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy