sql_autoload_register和__autoload之间的区别?

时间:2013-03-04 02:16:47

标签: php

我总是这样写:

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

1 个答案:

答案 0 :(得分: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