Php Zend库与我自己的库冲突
我在文件夹“classes”中有自己的lib。我正在尝试将Zend库作为独立库使用。(将他们的类集成到我的应用程序中) 例如,如下所示。Zend类都放在一个名为Zend的文件夹下 classes/db.class.php classes/Zend/translate.php 我以前使用自动加载函数加载类Php Zend库与我自己的库冲突,php,zend-framework,Php,Zend Framework,我在文件夹“classes”中有自己的lib。我正在尝试将Zend库作为独立库使用。(将他们的类集成到我的应用程序中) 例如,如下所示。Zend类都放在一个名为Zend的文件夹下 classes/db.class.php classes/Zend/translate.php 我以前使用自动加载函数加载类 if (!function_exists ("__autoload")){ function __autoload($class_name) { if(file_exists(ABS
if (!function_exists ("__autoload")){
function __autoload($class_name)
{
if(file_exists(ABSPATH.'/classes/'.$class_name.'.class.php')){
require_once ABSPATH.'/classes/'.$class_name.'.class.php';
}
}
}
我的函数检查我的应用程序是否需要我的类,如果需要,我将从我的“类”文件夹加载它,如果不需要,它将从Zend文件夹加载
每当我打电话
require_once ABSPATH.'/classes/Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
它一直说我自己的类没有加载。我认为这是Zend auto load的一个问题,它检查并发现它需要Zend文件夹中的db.class.php
当我去Zend和我自己的库之间的独立库时,我该怎么做。magic
\uu autoload
功能不支持多个自动加载程序。如果如上所示指定自定义自动加载器,然后注册Zend自动加载器,则之前安装的自动加载器将被Zend自动加载器覆盖
由于Zend组件使用spl_autoload_register(),您也可以使用此方法(支持多个自动加载器-它基本上安装一个单独的自动加载器,处理另一堆(用户定义的)自动加载器)
我想使用Zend autoload,因为它使事情变得更加简单,我不需要担心需要哪个类。嗨,那么spl_autoload_register()的作用是它支持多个自动加载,以便Zend autoloader在覆盖我以前的自动加载程序时可以使用?我说得对吗?是的-您只能定义一个具有特殊名称的函数
\uuu autoload
,因此您无法以这种方式定义两个自动加载器spl\u autoload\u register
几乎保留了所有应被视为自动加载程序的已注册函数的列表,并在需要自动加载时调用它们,但其副作用是您不能再使用\u autoload
。感谢您的清晰解释和帮助。非常感谢。
// Example (requires PHP >= 5.3 because of the anonymous function)
spl_autoload_register(function($className) {
$fileName = ABSPATH .'/classes/'. $className .'.class.php';
if (is_readable($fileName)) {
require_once($fileName);
}
});