我有index.php文件,在最顶层我定义__autoload魔术函数。
function __autoload($className) {
echo "autoloading $className";
require_once('application/models/'.strtolower($className).'.php');
}
然后,我自动引用__autoload包含的User对象(User.php)。到目前为止,一切正常。 问题是User.php引用了File类
$obj->numberOfUploads = File::countUploadsByUser($obj->ID);
并且此时抛出错误
致命错误:第19行的Z:\ home \ project \ www \ application \ models \ user.php中找不到类'文件'
问题是,我可以看到输出
自动加载用户
但看不到任何重新调整文件的内容。因此,看起来,当捕获对File的引用时,根本不会调用__autoload函数。尝试将__autoload函数添加到User.php导致重新声明该函数时出错。
如果之前提出的问题,我很抱歉,我试图谷歌搜索并找不到任何信息。
干杯
答案 0 :(得分:3)
从autoload in the php manual的评论来看,似乎有很多人在定义__autoload
两次时遇到过类似的问题。
我建议将spl_autoload_register
与匿名函数一起使用以避免多个定义冲突,如该页面的示例1中所示:
// Or, using an anonymous function as of PHP 5.3.0
spl_autoload_register(function ($class) {
include 'classes/' . $class . '.class.php';
});
此外,您不需要使用require_once
(只能使用require
),因为如果已找到该类,则不会再次调用该处理程序。
尝试在spl_autoload_register
文件中使用index.php
,如果不起作用,请在User.php
中添加一个。{/ p>
祝你好运!