我正在运行最新版本的XAMPP,并且autoload()似乎没有按预期工作。我几乎用PHP手册中的那个替换了我以前的自动加载,但无济于事。
在放入一些echo和die()之后,我得出结论,根本没有调用__autoload。
class Main
{
var $config_data;
function __autoload($class_name) {
echo "hello.";
// If the file exists, require it
if (file_exists(SYSTEMDIR.$class_name.".".EXT)) {
echo 'Autoloader: The class exists.';
(require_once(SYSTEMDIR.$class_name.".".EXT))
or die("I tried to autoload class $class_name, but it failed! =(");
} else {
// The file didn't even exist. Die.
die("I was going to autoload class $class_name, but it didn't exist! =(");
}
}
/*
* Function __construct
* @param datatype variable description
* @return datatype description
*/
function __construct(/* $arg */) {
//Load the config
$this->config = new Config;
//Load the uri class:
$this->uri = new Uri;
}
}
它不会输出位于__autoload()顶部的“hello”。
唯一的输出是:
致命错误:未找到“配置”类 在E:\ xampplite \ htdocs \ system \ Main.php中 第84行
答案 0 :(得分:4)
必须在课外定义AFAIK函数__autoload
。如果要将自动加载功能实现为类的一部分,则应使用回调和spl_autoload_register
答案 1 :(得分:2)
那是因为您声明了Main->__autoload()
函数(即类方法)而不是全局__autoload()
答案 2 :(得分:1)
__autoload
不会在课程中。它习惯于包含该类所在的文件。
您需要在初始脚本中添加自动加载功能才能让它执行任何操作。