PHP 自动加载类机制
2016-07-27 17:03:43 小德 PHP 访问次数 686


当PHP程序中遇到类文件调用时一般用include或者require引用类文件,当大量的文件需要引用时会在脚本头部引用一大堆文件。这样会降低效率,代码难以维护。php引用自动加载机制可解决这一问题。


spl_autoload_register :注册给定的函数作为 __autoload 的实现;

如果在你的程序中已经实现了__autoload()函数,它必须显式注册到__autoload()队列中。
因为 spl_autoload_register()函数会将Zend Engine中的__autoload()函数取代为spl_autoload()或spl_autoload_call()。

如果需要多条 autoload 函数,spl_autoload_register() 满足了此类需求。
它实际上创建了 autoload 函数的队列,按定义时的顺序逐个执行。相比之下, __autoload() 只可以定义一次。

比较:
1)SPL函数很丰富,提供了更多功能,如spl_autoload_unregister()注销已经注册的函数、spl_autoload_functions()返回所有已经注册的函数等;
2)__autoload()函数只能存在一次啊,spl_autoload_register()当然能注册多个函数;
3)如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为 spl_autoload_register()函数会将Zend Engine中的__autoload函数取代为spl_autoload() 或 spl_autoload_call() ,
__autoload 方法在 spl_autoload_register 后会失效,因为 autoload_func 函数指针已指向 spl_autoload 方法 ,
可以通过下面的方法来把 _autoload 方法加入 autoload_functions list
spl_autoload_register( '__autoload' );