我有一个奇怪的问题。我有一个加载类的静态方法(load_library)。当它加载一个特定的类时,它给了我一个“无法重新声明类”的致命错误,但是在使用load_library方法加载它之前测试该类是否存在时,它说该类不存在。 load_library方法在没有这种错误的地方工作。
如果我将load_library调用出来,它说它在几行后实际使用该类时找不到该类。更奇怪的是,如果我取出我的注册类autoload函数,即使这个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