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.php在loaders/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)
我也在使用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)
希望这会有所帮助.