我有一个奇怪的问题。我有一个加载类的静态方法(load_library)。当它加载一个特定的类时,它给了我一个“无法重新声明类”的致命错误,但是在使用load_library方法加载它之前测试该类是否存在时,它说该类不存在。 load_library
方法在没有这种错误的地方工作。混淆“无法重新声明类”错误(PHP)
如果我把load_library调用出来,它说它在几行后实际使用类时找不到类。更奇怪的是,如果我取出我的注册类autoload
函数,而不是完全正常工作,即使此功能甚至不检查我尝试加载的类所在的目录。
这是一个复杂的问题涉及很多文件,所以很难发布代码,但是这个问题对于那些人来说很熟悉吗?
我load_library方法:
public static function load_library($name) {
if (!class_exists($name)) {
if (file_exists('application/libraries/' . $name . '.php')) {
include('application/libraries/' . $name . '.php');
} else {
trigger_error('Request made for non-existant library ('.$name.').', E_USER_ERROR);
}
}
}
我调用load_library方法:
lev::load_library('lev_unit_tester/lev_base_test');
我的注册自动加载方法:
public static function autoloader($name) {
if (class_exists($name)) return;
if (file_exists('application/libraries/' . $name . '.php')) {
include('application/libraries/' . $name . '.php');
}
}
我试图加载的类(本是发生错误的地方):
abstract class lev_base_test {
}
实际的错误信息:
Fatal error: Cannot redeclare class lev_base_test in /some/path/application/libraries/lev_unit_tester/lev_base_test.php on line 5
当我做的包括是当我得到的错误。我查看了在我做包含之前这个类是否存在。 – dqhendricks 2011-03-28 04:51:26
它没有。 – dqhendricks 2011-03-28 04:51:45