Don't like ads? PRO users don't see any ads ;-)
Guest

ZF-8529

By: a guest on Mar 4th, 2011  |  syntax: None  |  size: 2.62 KB  |  hits: 109  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. From c6fa951469bcba7198b76895378df87c9605a6b4 Mon Sep 17 00:00:00 2001
  2. From: Steven Rosato <steven.rosato@majisti.com>
  3. Date: Fri, 4 Mar 2011 00:32:38 -0500
  4. Subject: [PATCH] Fix for ZF-8529 Namespace Package_Subpackage not supported by module Resource Loader.
  5.  Subnamespaces are now possible.
  6.  
  7. ---
  8.  library/Zend/Loader/Autoloader.php          |   14 +++++++++-----
  9.  library/Zend/Loader/Autoloader/Resource.php |    6 ++++--
  10.  2 files changed, 13 insertions(+), 7 deletions(-)
  11.  
  12. diff --git a/library/Zend/Loader/Autoloader.php b/library/Zend/Loader/Autoloader.php
  13. index 189af9c..0dc17cf 100644
  14. --- a/library/Zend/Loader/Autoloader.php
  15. +++ b/library/Zend/Loader/Autoloader.php
  16. @@ -335,12 +335,16 @@ class Zend_Loader_Autoloader
  17.                  continue;
  18.              }
  19.              if (0 === strpos($class, $ns)) {
  20. -                $namespace   = $ns;
  21. -                $autoloaders = $autoloaders + $this->getNamespaceAutoloaders($ns);
  22. -                break;
  23. +                // ZF-8529: now looping the entire array in case of subpackages
  24. +                $namespace = $ns;
  25.              }
  26.          }
  27.  
  28. +        // ZF_8529
  29. +        if ( $namespace ) {
  30. +            $autoloaders = $autoloaders + $this->getNamespaceAutoloaders($namespace);
  31. +        }
  32. +
  33.          // Add internal namespaced autoloader
  34.          foreach ($this->getRegisteredNamespaces() as $ns) {
  35.              if (0 === strpos($class, $ns)) {
  36. @@ -350,8 +354,8 @@ class Zend_Loader_Autoloader
  37.              }
  38.          }
  39.  
  40. -        // Add non-namespaced autoloaders
  41. -        $autoloaders = $autoloaders + $this->getNamespaceAutoloaders('');
  42. +        // Add non-namespaced autoloaders, ZF-8529: fixed merge
  43. +        $autoloaders = array_merge($autoloaders, $this->getNamespaceAutoloaders(''));
  44.  
  45.          // Add fallback autoloader
  46.          if (!$namespace && $this->isFallbackAutoloader()) {
  47. diff --git a/library/Zend/Loader/Autoloader/Resource.php b/library/Zend/Loader/Autoloader/Resource.php
  48. index f2ba9d3..e286377 100644
  49. --- a/library/Zend/Loader/Autoloader/Resource.php
  50. +++ b/library/Zend/Loader/Autoloader/Resource.php
  51. @@ -146,8 +146,10 @@ class Zend_Loader_Autoloader_Resource implements Zend_Loader_Autoloader_Interfac
  52.  
  53.          if (!empty($namespaceTopLevel)) {
  54.              $namespace = array_shift($segments);
  55. -            if ($namespace != $namespaceTopLevel) {
  56. -                // wrong prefix? we're done
  57. +
  58. +            /* support for subpackages namespaces ZF-8529 */
  59. +            if ( strpos($class, $namespaceTopLevel) !== 0 ) {
  60. +                // wrong namespace? we're done
  61.                  return false;
  62.              }
  63.          }
  64. --
  65. 1.7.0.4