我正在尝试使用__autoload()魔术方法,但我真的不明白
我正在使用它
function __autoload($class)
{
require_once("./path/to/classes/".$class.".php");
}
好的,有几个问题。我的'classes /'文件夹中有5个类文件,我有一个这样的命名结构:access.class.php
我注意到的一件事是,由于某种原因,我无法加载超过4个类,我从我的php错误报告中找不到类:ClassNameHere未找到或出现错误。
所以我将require_once调整为
require_once(strtolower("./path/to/classes/".$class.".class.php"));
伟大的可行但现在我回到我想知道为什么我不能加载超过4个类?
我有一个主要类和另外3个扩展该类的主要类。
答案 0 :(得分:1)
function __autoload($class)
{
require_once("./path/to/classes/".$class.".php");
}
你的函数正在寻找className.php但你的文件是className.class.php所以你必须使用as:
function __autoload($class)
{
require_once("./path/to/classes/".$class.".class.php");
}
答案 1 :(得分:0)
如果__autoload()正常工作,则在调用类之前不需要require_once!它将被自动加载。
答案 2 :(得分:-1)
您可以定义一个__autoload函数,如果您尝试使用尚未定义的类/接口,则会自动调用该函数。通过调用此函数,在PHP失败并出现错误之前,脚本引擎将获得加载类的最后机会。
因此,实际上,当您尝试实例化尚未加载的类时,将调用__autoload函数并将类的名称作为参数传递。我建议您尝试使用应用中的所有类路径配置数组。因此,如果您说的是位于./_classes/Users.php中的类User,那么您的配置数组看起来就像$ CFG ['classes'] ['User'] =“./_ classes / Users.php”;自动加载功能将如下所示:
function __autoload($className){
global $CFG;
include_once($CFG['classes'][$className]);
}