繁体   English   中英

php spl_autoload_register与__autoload吗?

[英]php spl_autoload_register vs __autoload?

您好,除了可以使用自己的名称自动加载功能以外,其他用法是否有所不同? 有任何性能差异吗? 他们在内部如何工作?

之间

function __autoload_libraries($class){
    include_once 'lib.'.$class.'.php';
}

spl_autoload_register('__autoload_libraries');

function __autoload($class){
    include_once 'lib.'.$class.'.php';
}

__autoload通常被认为已过时。 它仅允许单个自动装带器。 通常,仅当使用的PHP版本不支持spl_autload_register才应使用__autoload

spl_autoload_register允许注册多个自动加载器,这些自动加载器将依次运行,直到找到并加载匹配的类/接口/特征,或者直到所有自动加载选项都用尽为止。 这意味着,如果您使用框架代码或其他实现自己的自动加载器的第三方库,则不必担心会引起冲突。

更新:

自PHP 7.2.0起, __autoload现在已正式被弃用,这意味着它现在位于斩波块中。 如果您希望代码与将来的PHP版本兼容,则绝对不应该使用__autoload

“自动加载类”的文档内容为

spl_autoload_register()为自动加载类提供了更灵活的替代方法。 因此,不建议使用__autoload(),以后可能不建议使用或将其删除。

spl_autoload_register()的文档如下:

如果必须有多个自动加载功能,则spl_autoload_register()允许这样做。 它有效地创建了自动加载功能队列,并按照定义的顺序遍历每个功能。 相反,__ autoload()只能定义一次。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM