Sfoglia il codice sorgente

[ZF-10136] Zend_Loader

- Fix union autoloaders with namespace global.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@23907 44c647ce-9c0f-0410-b52a-842ac1e357ba
ramon 14 anni fa
parent
commit
070c60dab5
2 ha cambiato i file con 21 aggiunte e 1 eliminazioni
  1. 7 1
      library/Zend/Loader/Autoloader.php
  2. 14 0
      tests/Zend/Loader/AutoloaderTest.php

+ 7 - 1
library/Zend/Loader/Autoloader.php

@@ -352,7 +352,13 @@ class Zend_Loader_Autoloader
         }
 
         // Add non-namespaced autoloaders
-        $autoloaders = $autoloaders + $this->getNamespaceAutoloaders('');
+        $autoloadersNonNamespace = $this->getNamespaceAutoloaders('');
+        if (count($autoloadersNonNamespace)) {
+            foreach ($autoloadersNonNamespace as $ns) {
+                $autoloaders[] = $ns;
+            }
+            unset($autoloadersNonNamespace);
+        }
 
         // Add fallback autoloader
         if (!$namespace && $this->isFallbackAutoloader()) {

+ 14 - 0
tests/Zend/Loader/AutoloaderTest.php

@@ -405,6 +405,20 @@ class Zend_Loader_AutoloaderTest extends PHPUnit_Framework_TestCase
         $this->assertEquals(array($this, 'autoloadSecondLevel'), $al);
     }
 
+    /**
+     * @group ZF-10136
+     */
+    public function testMergedAutoloadersWithoutNamespace()
+    {
+        $this->autoloader
+             ->pushAutoloader('autoloadOne')
+             ->pushAutoloader('autoloadSecond');
+
+        $class = 'Zend_Autoloader_Test';
+        $autoloaders = $this->autoloader->getClassAutoloaders($class);
+        $this->assertEquals(3, count($autoloaders));
+    }
+
     public function addTestIncludePath()
     {
         set_include_path(dirname(__FILE__) . '/_files/' . PATH_SEPARATOR . $this->includePath);