我正在尝试使用__autoload()这个神奇的方法,但我并不真正理解它
我是这样使用它的
function __autoload($class)
{
require_once("./path/to/classes/".$class.".php");
}好的,关于这个有几个问题。我在'classes/‘文件夹中有5个类文件,命名结构如下:access.class.php
我注意到的一件事是,由于某种原因,我不能加载超过4个类,我从我的php错误中得到了一个错误,报告没有找到Class: ClassNameHere之类的东西。
因此我将require_once调整为
require_once(strtolower("./path/to/classes/".$class.".class.php"));这很好,但现在我又想知道为什么我不能加载4个以上的类?
我有一个主类和3个扩展那个类的类。
发布于 2011-03-14 18:23:29
function __autoload($class)
{
require_once("./path/to/classes/".$class.".php");
}您的函数正在查找className.php,但您的文件是className.class.php,因此您必须使用:
function __autoload($class)
{
require_once("./path/to/classes/".$class.".class.php");
}发布于 2011-03-14 18:08:30
如果让__autoload()正常工作,那么在调用类之前就不需要require_once了!它将被自动加载。
发布于 2011-03-14 18:15:40
你可以定义一个__autoload函数,当你试图使用一个还没有定义的类/接口时,这个函数会被自动调用。通过调用此函数,脚本引擎将有最后一次机会在PHP失败并出现错误之前装入类。
因此,实际上,当您尝试实例化一个尚未装入的类时,会调用__autoload函数,并将类名作为参数传递。我建议您尝试使用应用程序中的所有类路径来配置数组。因此,如果您有位于./_classes/Users.php中的User类,您的配置数组将类似于$CFG'classes'="./_classes/Users.php";autoload函数将如下所示:
function __autoload($className){
global $CFG;
include_once($CFG['classes'][$className]);
}更多信息请访问:http://php.net/manual/en/language.oop5.autoload.php
https://stackoverflow.com/questions/5297066
复制相似问题