web/lib/Zend/Loader/Autoloader/Resource.php
changeset 807 877f952ae2bd
parent 207 621fa6caec0c
child 1230 68c69c656a2c
equal deleted inserted replaced
805:5e7a0fedabdf 807:877f952ae2bd
    13  * to license@zend.com so we can send you a copy immediately.
    13  * to license@zend.com so we can send you a copy immediately.
    14  *
    14  *
    15  * @category   Zend
    15  * @category   Zend
    16  * @package    Zend_Loader
    16  * @package    Zend_Loader
    17  * @subpackage Autoloader
    17  * @subpackage Autoloader
    18  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    18  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    19  * @version    $Id: Resource.php 20096 2010-01-06 02:05:09Z bkarwin $
    19  * @version    $Id: Resource.php 24593 2012-01-05 20:35:02Z matthew $
    20  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    20  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    21  */
    21  */
    22 
    22 
    23 /** Zend_Loader_Autoloader_Interface */
    23 /** Zend_Loader_Autoloader_Interface */
    24 require_once 'Zend/Loader/Autoloader/Interface.php';
    24 require_once 'Zend/Loader/Autoloader/Interface.php';
    27  * Resource loader
    27  * Resource loader
    28  *
    28  *
    29  * @uses       Zend_Loader_Autoloader_Interface
    29  * @uses       Zend_Loader_Autoloader_Interface
    30  * @package    Zend_Loader
    30  * @package    Zend_Loader
    31  * @subpackage Autoloader
    31  * @subpackage Autoloader
    32  * @copyright  Copyright (c) 2005-2010 Zend Technologies USA Inc. (http://www.zend.com)
    32  * @copyright  Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com)
    33  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    33  * @license    http://framework.zend.com/license/new-bsd     New BSD License
    34  */
    34  */
    35 class Zend_Loader_Autoloader_Resource implements Zend_Loader_Autoloader_Interface
    35 class Zend_Loader_Autoloader_Resource implements Zend_Loader_Autoloader_Interface
    36 {
    36 {
    37     /**
    37     /**
    86         }
    86         }
    87 
    87 
    88         if (!empty($namespace)) {
    88         if (!empty($namespace)) {
    89             $namespace .= '_';
    89             $namespace .= '_';
    90         }
    90         }
       
    91         require_once 'Zend/Loader/Autoloader.php';
    91         Zend_Loader_Autoloader::getInstance()->unshiftAutoloader($this, $namespace);
    92         Zend_Loader_Autoloader::getInstance()->unshiftAutoloader($this, $namespace);
    92     }
    93     }
    93 
    94 
    94     /**
    95     /**
    95      * Overloading: methods
    96      * Overloading: methods
   142         $segments          = explode('_', $class);
   143         $segments          = explode('_', $class);
   143         $namespaceTopLevel = $this->getNamespace();
   144         $namespaceTopLevel = $this->getNamespace();
   144         $namespace         = '';
   145         $namespace         = '';
   145 
   146 
   146         if (!empty($namespaceTopLevel)) {
   147         if (!empty($namespaceTopLevel)) {
   147             $namespace = array_shift($segments);
   148             $namespace = array();
       
   149             $topLevelSegments = count(explode('_', $namespaceTopLevel));
       
   150             for ($i = 0; $i < $topLevelSegments; $i++) {
       
   151                 $namespace[] = array_shift($segments);
       
   152             }
       
   153             $namespace = implode('_', $namespace);
   148             if ($namespace != $namespaceTopLevel) {
   154             if ($namespace != $namespaceTopLevel) {
   149                 // wrong prefix? we're done
   155                 // wrong prefix? we're done
   150                 return false;
   156                 return false;
   151             }
   157             }
   152         }
   158         }
   203      * @param  array $options
   209      * @param  array $options
   204      * @return Zend_Loader_Autoloader_Resource
   210      * @return Zend_Loader_Autoloader_Resource
   205      */
   211      */
   206     public function setOptions(array $options)
   212     public function setOptions(array $options)
   207     {
   213     {
       
   214         // Set namespace first, see ZF-10836
       
   215         if (isset($options['namespace'])) {
       
   216             $this->setNamespace($options['namespace']);
       
   217             unset($options['namespace']);
       
   218         }
       
   219 
   208         $methods = get_class_methods($this);
   220         $methods = get_class_methods($this);
   209         foreach ($options as $key => $value) {
   221         foreach ($options as $key => $value) {
   210             $method = 'set' . ucfirst($key);
   222             $method = 'set' . ucfirst($key);
   211             if (in_array($method, $methods)) {
   223             if (in_array($method, $methods)) {
   212                 $this->$method($value);
   224                 $this->$method($value);