Przeglądaj źródła

ZF-6719: Allow Zend_App to accept multiple config files.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@19113 44c647ce-9c0f-0410-b52a-842ac1e357ba
sidhighwind 16 lat temu
rodzic
commit
0d8014e5b5

+ 9 - 1
library/Zend/Application.php

@@ -124,7 +124,15 @@ class Zend_Application
     public function setOptions(array $options)
     {
         if (!empty($options['config'])) {
-            $options = $this->mergeOptions($this->_loadConfig($options['config']), $options);
+            if (is_array($options['config'])) {
+                $_options = array();
+                foreach ($options['config'] as $tmp) {
+                    $_options = $this->mergeOptions($_options, $this->_loadConfig($tmp));
+                }
+                $options = $this->mergeOptions($_options, $options);
+            } else {
+                $options = $this->mergeOptions($this->_loadConfig($options['config']), $options);
+            }
         }
 
         $this->_options = $options;

+ 15 - 1
tests/Zend/Application/ApplicationTest.php

@@ -444,7 +444,8 @@ class Zend_Application_ApplicationTest extends PHPUnit_Framework_TestCase
     /**
      * @group ZF-6618
      */
-    public function testCanExecuteBoostrapResourceViaApplicationInstanceBootstrapMethod() {
+    public function testCanExecuteBoostrapResourceViaApplicationInstanceBootstrapMethod()
+    {
         $application = new Zend_Application('testing', array(
             'bootstrap' => array(
                 'path' => dirname(__FILE__) . '/_files/ZfAppBootstrap.php',
@@ -457,6 +458,19 @@ class Zend_Application_ApplicationTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(1, $application->getBootstrap()->fooExecuted);
         $this->assertEquals(0, $application->getBootstrap()->barExecuted);
     }
+    
+    public function testOptionsCanHandleMuiltipleConigFiles()
+    {
+        $application = new Zend_Application('testing', array(
+            'config' => array(
+                dirname(__FILE__) . '/_files/Zf-6719-1.ini',
+                dirname(__FILE__) . '/_files/Zf-6719-2.ini'
+                )
+            )
+        );
+        
+        $this->assertEquals('baz', $application->getOption('foo'));
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Application_ApplicationTest::main') {

+ 5 - 0
tests/Zend/Application/_files/Zf-6719-1.ini

@@ -0,0 +1,5 @@
+[production]
+foo = "bar"
+
+[testing : production]
+

+ 5 - 0
tests/Zend/Application/_files/Zf-6719-2.ini

@@ -0,0 +1,5 @@
+[production]
+foo = "baz"
+
+[testing : production]
+