Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP自动加载函数有时不起作用_Php_Autoload - Fatal编程技术网

PHP自动加载函数有时不起作用

PHP自动加载函数有时不起作用,php,autoload,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/>";

我对自动加载功能有奇怪的问题。我有以下代码:

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 Debug”。最奇怪的是,若我在其他函数或其他地方调用调试类,那个么自动加载工作


为什么不调用自动加载功能?原因可能是什么?项目上没有spl\u自动加载\u寄存器功能。

有两种功能。首先,如果使用名称空间,则必须包含正确的名称空间。您可以在
$class
变量上创建
var\u dump
,以查看类名是否正确

另一件事是,您应该验证您的路径是否确实正确。也许您应该使用
\uuuu DIR\uuuu
dirname(\uuu file\uuuu)
指定文件的完整路径

函数自动加载($class){
自动加载函数中的“echo:”.$class.“
”; if(是_文件(uuu DIR_uuu.'/'.$class..php))){ 需要_once uuu DIR uuu.'/'.$class..php”; } }

也许您应该检查该文件是否存在。

没有名称空间我找到了解决方案,这是Smarty模板引擎。没有名称空间,文件存在,因为is_file(“Debug.php”)返回true。有一种奇怪的行为——首先脚本必须调用autoload,若它并没有找到类,则抛出一个错误。但在我的例子中,脚本在没有自动加载功能的情况下抛出错误。。。您是否在调试文件中定义了类?听起来有点愚蠢:D,但有时候解决方案很简单。我发现了到底出了什么问题-Smarty autoload杀死了我的autoload。嗯,好吧。。。如果你有另一个函数,那就是一个问题。
in autoload function: TestClass
file exist
class not exist
Fatal error: Class 'Debug' not found in Z:[my local host path] on line 207
function __autoload($class) {
    echo "in autoload function: ".$class."<br/>";
    if(is_file(__DIR__.'/'.$class.".php")) {
        require_once __DIR__.'/'.$class.".php";
    }
}