Jelajahi Sumber

Fix for ZF-9131 Zend_App_Resource_Multidb no more passes on 'adapter' as adapterparameter

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@21013 44c647ce-9c0f-0410-b52a-842ac1e357ba
freak 16 tahun lalu
induk
melakukan
9697557abc

+ 6 - 2
library/Zend/Application/Resource/Multidb.php

@@ -78,9 +78,13 @@ class Zend_Application_Resource_Multidb extends Zend_Application_Resource_Resour
         $options = $this->getOptions();
         
         foreach ($options as $id => $params) {
-            $this->_dbs[$id] = Zend_Db::factory($params['adapter'], $params);
+        	$adapter = $params['adapter'];
+            $default = isset($params['default'])?(int)$params['default']:false;
+            unset($params['adapter'], $params['default']);
+        	
+            $this->_dbs[$id] = Zend_Db::factory($adapter, $params);
 
-            if ((isset($params['default']) && $params['default'] == true) 
+            if ($default
                 // For consistency with the Db Resource Plugin
                 || (isset($params['isDefaultTableAdapter']) 
                     && $params['isDefaultTableAdapter'] == true)

+ 22 - 0
tests/Zend/Application/Resource/MultidbTest.php

@@ -169,6 +169,28 @@ class Zend_Application_Resource_MultidbTest extends PHPUnit_Framework_TestCase
         }
     }
     
+    /**
+     * @group ZF-9131
+     */
+    public function testParamDefaultAndAdapterAreNotPassedOnAsParameter()
+    {
+        $resource = new Zend_Application_Resource_Multidb(array());
+        $resource->setBootstrap($this->bootstrap);
+        $resource->setOptions($this->_dbOptions);
+        $res = $resource->init();
+        
+        $expected = array(
+            'dbname' => 'db2',
+            'password' => 'notthatpublic',
+            'username' => 'dba',
+            'charset' => null,
+            'persistent' => false,
+            'options' => array('caseFolding' => 0, 'autoQuoteIdentifiers' => true),
+            'driver_options' => array());
+        $this->assertEquals($expected, $res->getDb('db2')->getConfig());
+    }
+
+    
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Application_Resource_LogTest::main') {