首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用spl_autoload_register?

如何使用spl_autoload_register?
EN

Stack Overflow用户
提问于 2012-06-21 11:47:55
回答 1查看 29.5K关注 0票数 20
代码语言:javascript
复制
class Manage
{

spl_autoload_register(function($class) {
    include $class . '.class.php';
});
}

假设我有一些类似上面的代码。我选择使用匿名函数方法来装入类,但是如何使用呢?它究竟是如何确定加载哪个'$class'的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 11:51:37

你不能把代码放在那里。您应该在类之后添加SPL寄存器。如果你想在Manage类中注册一个函数,你可以这样做:

代码语言:javascript
复制
class Manage {
    public static function autoload($class) {
        include $class . '.class.php';
    }
}

spl_autoload_register(array('Manage', 'autoload'));

但是,正如您所演示的,您可以使用匿名函数。你甚至不需要一个类,所以你可以这样做:

代码语言:javascript
复制
spl_autoload_register(function($class) {
    include $class . '.class.php';
});

无论采用哪种方法,您指定的函数都会添加到负责自动加载的函数池中。您的函数将被附加到此列表中(因此,如果列表中已有任何函数,则您的函数将是最后一个)。有了这个,当你这样做的时候:

代码语言:javascript
复制
UnloadedClass::someFunc('stuff');

PHP会意识到UnloadedClass还没有被声明。然后,它将遍历SPL自动加载函数列表。它将使用一个参数调用每个函数:'UnloadedClass'。然后,在调用每个函数之后,它会检查类是否存在。如果不是,它会继续,直到它到达列表的末尾。如果类从未装入,您将收到一个致命错误,告诉您该类不存在。

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

https://stackoverflow.com/questions/11131238

复制
相关文章

相似问题

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