【发布时间】:2011-05-01 22:38:22
【问题描述】:
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");
结果: 尝试自动加载将自动加载映射器/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\EasyPHP-5.3.5.0\www\proj\29letters\login.php 中找不到类“UserMapper”
有什么想法吗? 是的,我正在运行 PHP 5.3.5
【问题讨论】:
-
您是否在 CLI 交互模式下运行?
-
我能想到的可能是在其他地方声明了其他一些 __autoload 函数,但我认为这应该会产生某种错误,以通知您您正在尝试重新声明 __autoload .代码中没有任何内容可以解释为什么它根本不会输出任何东西,它至少应该输出“尝试自动加载”。
-
phpinfo 说:“服务器 API:Apache 2.0 句柄”。据我所知,这不是 CLI。我也不认为其他地方有自动加载功能,因为我能够定义它并手动调用它,而且它主要是我的代码。这很奇怪,但我没有太多精力去调查,spl_autoload_register 对我来说效果很好!