【发布时间】:2012-12-13 10:24:36
【问题描述】:
我有 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 导致重新声明该函数时出错。
对不起,如果之前提出过这个问题,我尝试谷歌它并没有找到任何信息。
干杯
【问题讨论】:
-
我认为您看到的输出可能是误报,正如您在加载
User脚本时可能看到的那样。我刚刚开始学习如何使用命名空间,但我想知道这是否有助于解决这个问题? php.net/manual/en/language.namespaces.importing.php -
你是对的 - 只有在包含成功的情况下才会显示输出。我还没有处理命名空间,因为这是一个相对较新的功能,所以我不能说它是否有帮助。但是 Fabian Tamp 解决方案可以解决问题