1:__autoload($class) 因为是一个函数,所以只能定义一次,使用多个会冲突报错;而 sql_autoload_register('function') 可定义多个,它有效地创建一个队列的自动装载函数并按顺序依次定义
2:SPL函数很丰富,有更多的操作空间:如spl_autoload_unregister()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的
3: 自动加载对象更加方便,很多框架都是这样做的:
1 class ClassAutoloader { 2 public function __construct() { 3 spl_autoload_register(array($this, 'loader')); 4 } 5 private function loader($className) { 6 echo 'Trying to load ', $className, ' via ', __METHOD__, "()\n"; 7 include $className . '.php'; 8 } 9 } 10 11 $autoloader = new ClassAutoloader(); 12 13 $obj = new Class1(); 14 $obj = new Class2();
总结:推荐使用sql_autoload_register()函数,抛弃__autoload()
2:SPL函数很丰富,有更多的操作空间:如spl_autoload_unregister()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的
3: 自动加载对象更加方便,很多框架都是这样做的:
1 class ClassAutoloader { 2 public function __construct() { 3 spl_autoload_register(array($this, 'loader')); 4 } 5 private function loader($className) { 6 echo 'Trying to load ', $className, ' via ', __METHOD__, "()\n"; 7 include $className . '.php'; 8 } 9 } 10 11 $autoloader = new ClassAutoloader(); 12 13 $obj = new Class1(); 14 $obj = new Class2();
总结:推荐使用sql_autoload_register()函数,抛弃__autoload()