我有一个奇怪的问题。我有一个加载类(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 {
}
实际的错误信息:
致命错误:无法在第 5 行的 /some/path/application/libraries/lev_unit_tester/lev_base_test.php 中重新声明类 lev_base_test