Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.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,结果: 尝试自动加载将自动加载mappers/UserMapper.php完成 function __autoload($class_name) { echo("Attempting autoload "); if (substr($class_name, -6) == "Mapper") { $file = 'mappers/'.$class_name.'.php'; echo "Will autoload $file "; in

结果: 尝试自动加载将自动加载mappers/UserMapper.php完成

function __autoload($class_name) {
    echo("Attempting autoload ");
    if (substr($class_name, -6) == "Mapper") {
        $file = 'mappers/'.$class_name.'.php';
        echo "Will autoload $file ";
        include_once($file);
    }
}
__autoload("UserMapper");
$user = new UserMapper($adapter);

die("done");
(我刚刚注释掉了对_autoload()…)的手动调用)

结果: 致命错误:在第13行的C:\Program Files\EasyHP-5.3.5.0\www\proj\29letters\login.php中找不到类“UserMapper”

有什么想法吗?
是的,我运行的是PHP5.3.5,我不知道为什么你的例子不起作用,因为它应该按照手册的要求运行


您是否尝试使用注册自动加载器功能?

不确定为什么您的示例不起作用,因为它应该符合手册的要求


您是否尝试使用注册自动加载器功能?

您是否设置了正确的
包含路径?您正在使用相对路径来包含类的文件。尝试一条绝对路径

function __autoload($class_name) {
    echo("Attempting autoload ");
    if (substr($class_name, -6) == "Mapper") {
        $file = 'mappers/'.$class_name.'.php';
        echo "Will autoload $file ";
        include_once($file);
    }
}
//__autoload("UserMapper");
$user = new UserMapper($adapter);

die("done");


您是否设置了正确的
包含路径
?您正在使用相对路径来包含类的文件。尝试一条绝对路径

function __autoload($class_name) {
    echo("Attempting autoload ");
    if (substr($class_name, -6) == "Mapper") {
        $file = 'mappers/'.$class_name.'.php';
        echo "Will autoload $file ";
        include_once($file);
    }
}
//__autoload("UserMapper");
$user = new UserMapper($adapter);

die("done");



您是否在CLI交互模式下运行?我所能想到的是,可能在其他地方声明了其他一些_自动加载函数,但我认为这会生成某种错误,通知您您正在尝试重新声明_自动加载。代码中没有任何东西可以解释它为什么不输出任何东西,它至少应该输出“尝试自动加载”。据我所知,这还不算什么。我也不认为其他地方有自动加载功能,因为我能够定义它并手动调用它,而且它主要是我的代码。这很奇怪,但我没有太多精力去调查,spl_自动加载_寄存器对我来说很好!您是否在CLI交互模式下运行?我所能想到的是,可能在其他地方声明了其他一些_自动加载函数,但我认为这会生成某种错误,通知您您正在尝试重新声明_自动加载。代码中没有任何东西可以解释它为什么不输出任何东西,它至少应该输出“尝试自动加载”。据我所知,这还不算什么。我也不认为其他地方有自动加载功能,因为我能够定义它并手动调用它,而且它主要是我的代码。这很奇怪,但我没有太多精力去调查,spl_自动加载_寄存器对我来说很好!谢谢我把它放在应用程序的根文件中,让它工作,但我会让spl_autoload_register试试。注意:无论如何,你不应该使用u autoload(因为只有一个可以定义)。改为使用spl_自动加载_寄存器。再见,谢谢。我把它放在应用程序的根文件中,让它工作,但我会让spl_autoload_register试试。注意:无论如何,你不应该使用u autoload(因为只有一个可以定义)。改为使用spl_自动加载_寄存器。请看,我使用的是相对于根文件的路径。相同的路径适用于include()和require()。_uuuautload()是否以其他方式读取路径?
\uuuuu DIR\uuuu
表示它在其中定义的文件的路径。我猜自动加载将使用函数在其中定义的路径。但不确定。它没有在任何函数中定义。根文件是admin.php,其中包括login.php。两个文件都在同一个目录中,路径是相对于该目录的。我指的是自动加载函数。我使用的是相对于根文件的路径。相同的路径适用于include()和require()。_uuuautload()是否以其他方式读取路径?
\uuuuu DIR\uuuu
表示它在其中定义的文件的路径。我猜自动加载将使用函数在其中定义的路径。但不确定。它没有在任何函数中定义。根文件是admin.php,其中包括login.php。两个文件都在同一个目录中,路径是相对于该目录的。我指的是自动加载函数。
// do this outside of __autoload
set_include_path(get_include_path() . PATH_SEPARATOR . __DIR__ . '/../path/to/mappers';

// inside __autoload
$file = $class_name . '.php';
require $file;