首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >__autoload()帮助和理解

__autoload()帮助和理解
EN

Stack Overflow用户
提问于 2011-03-14 17:56:25
回答 3查看 164关注 0票数 1

我正在尝试使用__autoload()这个神奇的方法,但我并不真正理解它

我是这样使用它的

代码语言:javascript
复制
function __autoload($class)
{
     require_once("./path/to/classes/".$class.".php");
}

好的,关于这个有几个问题。我在'classes/‘文件夹中有5个类文件,命名结构如下:access.class.php

我注意到的一件事是,由于某种原因,我不能加载超过4个类,我从我的php错误中得到了一个错误,报告没有找到Class: ClassNameHere之类的东西。

因此我将require_once调整为

代码语言:javascript
复制
require_once(strtolower("./path/to/classes/".$class.".class.php"));

这很好,但现在我又想知道为什么我不能加载4个以上的类?

我有一个主类和3个扩展那个类的类。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-14 18:23:29

代码语言:javascript
复制
function __autoload($class)
{
     require_once("./path/to/classes/".$class.".php");
}

您的函数正在查找className.php,但您的文件是className.class.php,因此您必须使用:

代码语言:javascript
复制
function __autoload($class)
{
     require_once("./path/to/classes/".$class.".class.php");
}
票数 1
EN

Stack Overflow用户

发布于 2011-03-14 18:08:30

如果让__autoload()正常工作,那么在调用类之前就不需要require_once了!它将被自动加载。

票数 0
EN

Stack Overflow用户

发布于 2011-03-14 18:15:40

你可以定义一个__autoload函数,当你试图使用一个还没有定义的类/接口时,这个函数会被自动调用。通过调用此函数,脚本引擎将有最后一次机会在PHP失败并出现错误之前装入类。

因此,实际上,当您尝试实例化一个尚未装入的类时,会调用__autoload函数,并将类名作为参数传递。我建议您尝试使用应用程序中的所有类路径来配置数组。因此,如果您有位于./_classes/Users.php中的User类,您的配置数组将类似于$CFG'classes'="./_classes/Users.php";autoload函数将如下所示:

代码语言:javascript
复制
function __autoload($className){
    global $CFG;
    include_once($CFG['classes'][$className]);
}

更多信息请访问:http://php.net/manual/en/language.oop5.autoload.php

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5297066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档