我总是这样写:
function __autoload($className){
if(file_exists($className)){
include $classname . '.class.php';
}
}
但我发现有些编码员写的是这样的:
sql_autoload_register(function($className){
$class = str_replace('\\', '/', $className);
require_once($className);
});
所以,我想问一下sql_autoload_register和__autoload之间的区别,谢谢!
答案 0 :(得分:1)
来自PHP文档spl_autoload_register。粗体部分可能会给你更多的想法。
使用spl提供的__autoload堆栈注册一个函数。如果堆栈尚未激活,它将被激活。
如果您的代码具有现有的__autoload()函数,则必须在__autoload堆栈上显式注册此函数。这是因为spl_autoload_register()将通过spl_autoload()或spl_autoload_call()有效地替换__autoload()函数的引擎缓存。
如果必须有多个自动加载功能,spl_autoload_register()允许这样做。 它有效地创建了一个自动加载功能队列,并按照定义的顺序遍历每个功能。相比之下,__ autoload()只能定义一次。