我有自动加载功能的奇怪问题。我有这段代码:
function __autoload($class) {
echo "in autoload function: ".$class."<br/>";
require_once $class.".php";
}
TestClass::testMethod();
echo is_file("Debug.php") ? " file exist " : "file not exist";
echo "<br/>";
echo class_exists('Debug') ? "class exist" : "class not exist";
Debug::getIncludeExecutionTime($include, $time);
输出是:
in autoload function: TestClass
file exist
class not exist
Fatal error: Class 'Debug' not found in Z:[my local host path] on line 207
因此,在自动加载功能Debug&#39;中存在错误。最奇怪的是 - 如果我在其他函数中调用Debug类,或者在其他地方调用自动加载工作。
为什么没有调用自动加载功能?可能是什么原因?项目中没有spl_autoload_register函数。
答案 0 :(得分:1)
有两件事。首先,如果使用命名空间,则必须包含正确的命名空间。您可以在var_dump
变量上设置$class
以查看类名是否正确。
另一件事是你应该验证你的路径是否正确。也许您应该使用__DIR__
或dirname(__FILE__)
指定文件的完整路径。
function __autoload($class) {
echo "in autoload function: ".$class."<br/>";
if(is_file(__DIR__.'/'.$class.".php")) {
require_once __DIR__.'/'.$class.".php";
}
}
如果文件存在,也许你应该检查那一点。