php spl_autoload_register vs __autoload?

Ada*_*han 28 php autoload

你好,有没有使用这个例外,我们可以使用自己的名称自动加载?有没有性能差异?他们内部如何工作?

之间

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

spl_autoload_register('__autoload_libraries');
Run Code Online (Sandbox Code Playgroud)

VS

function __autoload($class){
    include_once 'lib.'.$class.'.php';
}
Run Code Online (Sandbox Code Playgroud)

Gor*_*onM 51

__autoload通常被认为是过时的.它只允许一个自动加载器.通常,只有__autoload在使用不支持的PHP版本时才应该使用spl_autload_register.

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

更新:

__autoload现在已经正式弃用了PHP 7.2.0,这意味着它现在正在斩首.如果您希望您的代码与PHP的未来版本兼容,那么您绝对不应该使用__autoload