فهرست منبع

Merge remote branch 'rrehbeindoi/master'

Fabien Potencier 14 سال پیش
والد
کامیت
ac49289451

+ 3 - 3
src/Symfony/Component/DependencyInjection/SimpleXMLElement.php

@@ -35,7 +35,7 @@ class SimpleXMLElement extends \SimpleXMLElement
      * @param string $name
      * @return mixed
      */
-    public function getArgumentsAsPhp($name)
+    public function getArgumentsAsPhp($name, $lowercase = true)
     {
         $arguments = array();
         foreach ($this->$name as $arg) {
@@ -45,7 +45,7 @@ class SimpleXMLElement extends \SimpleXMLElement
             $key = isset($arg['key']) ? (string) $arg['key'] : (!$arguments ? 0 : max(array_keys($arguments)) + 1);
 
             // parameter keys are case insensitive
-            if ('parameter' == $name) {
+            if ('parameter' == $name and $lowercase) {
                 $key = strtolower($key);
             }
 
@@ -73,7 +73,7 @@ class SimpleXMLElement extends \SimpleXMLElement
                     $arguments[$key] = new Reference((string) $arg['id'], $invalidBehavior, $strict);
                     break;
                 case 'collection':
-                    $arguments[$key] = $arg->getArgumentsAsPhp($name);
+                    $arguments[$key] = $arg->getArgumentsAsPhp($name, false);
                     break;
                 case 'string':
                     $arguments[$key] = (string) $arg;

+ 3 - 0
tests/Symfony/Tests/Component/DependencyInjection/Fixtures/xml/services2.xml

@@ -24,5 +24,8 @@
       </parameter>
     </parameter>
     <parameter key="foo_bar" type="service" id="foo_bar" />
+    <parameter key="MixedCase" type="collection"> <!-- Shoud be lower cased -->
+      <parameter key="MixedCaseKey">value</parameter> <!-- Shoud stay mixed case -->
+    </parameter>
   </parameters>
 </container>

+ 2 - 2
tests/Symfony/Tests/Component/DependencyInjection/Loader/XmlFileLoaderTest.php

@@ -84,7 +84,7 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
         $loader->load('services2.xml');
 
         $actual = $container->getParameterBag()->all();
-        $expected = array('a string', 'foo' => 'bar', 'values' => array(0, 'integer' => 4, 100 => null, 'true', true, false, 'on', 'off', 'float' => 1.3, 1000.3, 'a string', array('foo', 'bar')), 'foo_bar' => new Reference('foo_bar'));
+        $expected = array('a string', 'foo' => 'bar', 'values' => array(0, 'integer' => 4, 100 => null, 'true', true, false, 'on', 'off', 'float' => 1.3, 1000.3, 'a string', array('foo', 'bar')), 'foo_bar' => new Reference('foo_bar'), 'mixedcase' => array('MixedCaseKey' => 'value'));
 
         $this->assertEquals($expected, $actual, '->load() converts XML values to PHP ones');
     }
@@ -101,7 +101,7 @@ class XmlFileLoaderTest extends \PHPUnit_Framework_TestCase
         $loader->load('services4.xml');
 
         $actual = $container->getParameterBag()->all();
-        $expected = array('a string', 'foo' => 'bar', 'values' => array(true, false), 'foo_bar' => new Reference('foo_bar'), 'bar' => '%foo%', 'imported_from_ini' => true, 'imported_from_yaml' => true);
+        $expected = array('a string', 'foo' => 'bar', 'values' => array(true, false), 'foo_bar' => new Reference('foo_bar'), 'mixedcase' => array('MixedCaseKey' => 'value'), 'bar' => '%foo%', 'imported_from_ini' => true, 'imported_from_yaml' => true);
 
         $this->assertEquals(array_keys($expected), array_keys($actual), '->load() imports and merges imported files');
     }