在zend中保存自定义自动加载器的位置?

anp*_*anp 5 php oop model-view-controller zend-framework

我试图通过制作自定义自动加载器在我的应用程序中使用phpThumb.

class My_Loader_Autoloader_PhpThumb implements Zend_Loader_Autoloader_Interface {

   static protected $php_thumb_classes = array(
      'PhpThumb'        => 'PhpThumb.inc.php',
      'ThumbBase'       => 'ThumbBase.inc.php',
      'PhpThumbFactory' => 'ThumbLib.inc.php',
      'GdThumb'         => 'GdThumb.inc.php',
      'GdReflectionLib' => 'thumb_plugins/gd_reflection.inc.php',
   );

  /**
   * Autoload a class
   *
   * @param   string $class
   * @return  mixed
   *          False [if unable to load $class]
   *          get_class($class) [if $class is successfully loaded]
   */
   public function autoload($class) {
      $file = APPLICATION_PATH . '/../library/PhpThumb/' . self::$php_thumb_classes[$class];
      if (is_file($file)) {
         require_once($file);
         return $class;
      }
      return false;
   }
}
Run Code Online (Sandbox Code Playgroud)

PhpThumb.phploaders/Autoloader文件夹中保存了这个文件.然后将此行添加到引导程序文件中:

Zend_Loader_Autoloader::getInstance()->pushAutoloader(new My_Loader_Autoloader_PhpThumb());
Run Code Online (Sandbox Code Playgroud)

但它产生了一个错误,说没有找到类.我猜测'CustomLoader_PhpThumb.php'需要保存在其他地方.伙计们好吗?


UPDATE1:

Bootstrap.php文件内容

   <?php

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
    protected function _initAutoload()
    {
        $autoLoader=Zend_Loader_Autoloader::getInstance();
        $resourceLoader=new Zend_Loader_Autoloader_Resource(array(
            'basePath'=>APPLICATION_PATH,
            'namespace'=>'',
            'resourceTypes'=>array(
                'form'=>array(
                    'path'=>'forms/',
                    'namespace'=>'Form_'
                ),
                'models'=>array(
                    'path'=>'models/',
                    'namespace'=>'Model_'
                ),                
            )

            ));

        //return $autoLoader;

        $resourceLoader->addResourceType('loader', 'loaders/', 'My_Loader_');

        $autoLoader->pushAutoloader($resourceLoader);
        $autoLoader->pushAutoloader(new My_Loader_Autoloader_PhpThumb());
    }


}

?>
Run Code Online (Sandbox Code Playgroud)

Mar*_*cin 7

我也在使用PhpThumb和相同的自动加载器.在我的情况下,它被称为My_Loader_Autoloader_PhpThumb并位于APPLICATION_PATH . '/loaders/Autoloader/PhpThumb.php.

在我的Bootstrap.php中,首先我将加载器路径加载到Zend_Loader_Autoloader,然后按My_Loader_Autoloader_PhpThumb如下方式推送自动加载器:

    $autoLoader = Zend_Loader_Autoloader::getInstance();

    $resourceLoader = new Zend_Loader_Autoloader_Resource(array(
                'basePath' => APPLICATION_PATH,
                'namespace' => '',
            ));


    $resourceLoader->addResourceType('loader', 'loaders/', 'My_Loader_');

    $autoLoader->pushAutoloader($resourceLoader);
    $autoLoader->pushAutoloader(new My_Loader_Autoloader_PhpThumb());
Run Code Online (Sandbox Code Playgroud)

希望这会有所帮助.