这是类加载器的样子:
loader.php
class Load
{
public static function init($class)
{
require_once 'classes/' . $class . '.php';
return new $class();
}
}
$class = Load::init('MyClass');
返回的错误是:
Fatal error: Class 'MyClass' not found in /www/website/application/models/Database/loader.php on line 5
如果我将echo 'WORKS';
放入MyClass.php,我可以看到它没有包含在内。 echo
不执行。
更新:我似乎一直在编辑代码的缓存版本,而不是实际的文件......代码可以运行:}
答案 0 :(得分:2)
试试这个。
function __autoload($class_name) {
include $class_name . '.php';
}
将其放在任何可公开访问其余代码的位置。那时,当你做这样的事情时。
$class = new Foobar();
如果该类尚未包含在内,php将运行该__autoload函数并为您包含该文件。确保将include语句指向存储类的任何位置。
有关详细信息,请查看此处的php文档。
答案 1 :(得分:0)
classes/MyClass.php
是否包含MyClass
的类定义?
我假设require
能够在包含路径中找到classes/MyClass.php
,但它是否正在加载正确的文件?
答案 2 :(得分:0)
可能是几件事......
classes/
的文件系统路径是什么?它在你的包含路径上吗?如果没有,则需要使用绝对路径。
如果你在* nix上,大多数都使用区分大小写的文件系统 - 你的文件是MyClass.php
还是myclass.php
?
答案 3 :(得分:0)
三个提示:
application.ini
中根据PEAR(Zend)命名约定命名/放置文件。APPLICATION_PATH . '/../your/path'