-2

我总是这样写:

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的区别,谢谢!

4

1 回答 1

1

来自 PHP 文档spl_autoload_register。粗体部分可能会给您更多的想法。

使用 spl 提供的 __autoload 堆栈注册一个函数。如果堆栈尚未激活,它将被激活。

如果您的代码具有现有的 __autoload() 函数,则必须在 __autoload 堆栈上显式注册此函数。这是因为 spl_autoload_register() 将通过 spl_autoload() 或 spl_autoload_call() 有效地替换 __autoload() 函数的引擎缓存。

如果必须有多个自动加载函数,spl_autoload_register() 允许这样做。它有效地创建了一个自动加载函数队列,并按照定义的顺序遍历它们中的每一个。相比之下, __autoload() 只能定义一次。

编辑:这个答案应该有助于https://stackoverflow.com/a/6894585/710827

于 2013-03-04T02:31:53.740 回答