PHP自动加载功能有时不起作用

时间:2015-03-23 11:22:08

标签: php autoload

我有自动加载功能的奇怪问题。我有这段代码:

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函数。

1 个答案:

答案 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";
    }
}

如果文件存在,也许你应该检查那一点。