gpt4 book ai didi

php - 在 zend 中在哪里保存自定义自动加载器?

转载 作者:可可西里 更新时间:2023-11-01 13:56:57 26 4
gpt4 key购买 nike

我正在尝试使用 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;
}
}

我在 loaders/Autoloader 文件夹中将此文件保存为 PhpThumb.php。然后将这一行添加到 Bootstrap 文件中:

Zend_Loader_Autoloader::getInstance()->pushAutoloader(new My_Loader_Autoloader_PhpThumb());

但它会产生一个错误,指出找不到该类。我猜测“CustomLoader_PhpThumb.php”需要保存在其他地方。伙计们有什么想法吗?


更新 1:

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());
}


}

?>

最佳答案

我也在使用 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());

希望这会有所帮助。

关于php - 在 zend 中在哪里保存自定义自动加载器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5064247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com