8000 fix dumping number-like string parameters · symfony/symfony@a181423 · GitHub
[go: up one dir, main page]

Skip to content

Commit a181423

Browse files
committed
fix dumping number-like string parameters
1 parent 3bd5fae commit a181423

File tree

3 files changed

+27
-0
lines changed

3 files changed

+27
-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/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"/>

0 commit comments

Comments
 (0)
0