Explorar o código

ZF-7473: Resource autoloaders should be registered with Autoloader using trailing underscore

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@17416 44c647ce-9c0f-0410-b52a-842ac1e357ba
matthew %!s(int64=16) %!d(string=hai) anos
pai
achega
32769697b5

+ 4 - 1
library/Zend/Loader/Autoloader/Resource.php

@@ -85,6 +85,9 @@ class Zend_Loader_Autoloader_Resource implements Zend_Loader_Autoloader_Interfac
             throw new Zend_Loader_Exception('Resource loader requires both a namespace and a base path for initialization');
         }
 
+        if (!empty($namespace)) {
+            $namespace .= '_';
+        }
         Zend_Loader_Autoloader::getInstance()->unshiftAutoloader($this, $namespace);
     }
 
@@ -142,7 +145,7 @@ class Zend_Loader_Autoloader_Resource implements Zend_Loader_Autoloader_Interfac
 
         if (!empty($namespaceTopLevel)) {
             $namespace = array_shift($segments);
-            if ($namespace != $this->getNamespace()) {
+            if ($namespace != $namespaceTopLevel) {
                 // wrong prefix? we're done
                 return false;
             }

+ 14 - 0
tests/Zend/Loader/Autoloader/ResourceTest.php

@@ -373,6 +373,20 @@ class Zend_Loader_Autoloader_ResourceTest extends PHPUnit_Framework_TestCase
         $test = $this->loader->getModel('ZendLoaderAutoloaderResourceMethodOverloading');
         $this->assertTrue($test instanceof FooBar_Model_ZendLoaderAutoloaderResourceMethodOverloading);
     }
+
+    /**
+     * @group ZF-7473
+     */
+    public function testAutoloaderShouldReceiveNamespaceWithTrailingUnderscore()
+    {
+        $al = Zend_Loader_Autoloader::getInstance();
+        $loaders = $al->getNamespaceAutoloaders('FooBar');
+        $this->assertTrue(empty($loaders));
+        $loaders = $al->getNamespaceAutoloaders('FooBar_');
+        $this->assertFalse(empty($loaders));
+        $loader = array_shift($loaders);
+        $this->assertSame($this->loader, $loader);
+    }
 }
 
 if (PHPUnit_MAIN_METHOD == 'Zend_Loader_Autoloader_ResourceTest::main') {