首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP 5的自动加载效率低吗?

PHP 5的自动加载效率低吗?
EN

Stack Overflow用户
提问于 2012-03-07 08:16:45
回答 3查看 377关注 0票数 4

当您手动包含PHP类时,可以在当前脚本运行时执行它,对吗?然后,您可以决定,如果一个条件匹配您加载它,如果它没有,您没有。

代码语言:javascript
复制
if ( $_SERVER['REQUEST_METHOD'] === 'POST' ) {
    include '../../../Whatever/SanitizeUserInput.class.php';
    SanitizeUserInput::sanitize($_POST['someFieldName']);
}

但是假设我在这个类中使用了自拍特性。它是在开始时被有效加载,还是只有当它被使用时才会被加载?

我的意思是,我是否应该只在我100%肯定要在任何脚本(例如数据库连接、会话管理等)中使用的类中添加__autoload函数?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-07 08:20:16

只有当您试图访问所需的类时,才会调用Autoload。最好是使用spl_autoload_register()而不是__autoload

文档:

您可以定义一个__autoload()函数,如果您试图使用尚未定义的类/接口,则会自动调用该函数。

spl_autoload_register()为自动加载类提供了一种更灵活的替代方案。因此,不鼓励使用__autoload(),将来可能会取消使用或删除。

票数 6
EN

Stack Overflow用户

发布于 2012-03-07 08:22:30

当您尝试使用尚未加载的类时,Autoloading会启动:

代码语言:javascript
复制
include 'foo.php';
new Foo;  // autoload not used, because the class already exists

// Bar is not yet loaded here, auto or otherwise

new Bar; // Bar is being autoloaded, because it was not yet loaded

因此,自动加载是非常有效的。与需要时手工加载类相比,它的效率略低,因为调用autoload函数的开销很大。但是,通过手工跟踪加载的类要比自动跟踪要少得多。

票数 4
EN

Stack Overflow用户

发布于 2012-03-07 08:34:46

尝试一下,您将看到,每当PHP遇到一个它还不知道的类时,它就会调用您的autoload函数。当您的autoload函数告诉PHP这个类在哪个文件中时,它将加载这个文件。

为了简短起见,PHP只在需要时加载文件,即使在条件下也是如此,因此永远不会加载下面的测试类。

代码语言:javascript
复制
if (false)
{
  $test = new CTest(); // never loaded with autoload.
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9597907

复制
相关文章

相似问题

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