关于spl_autoload_register __autoload()和(),我相信大多数人会选择前者看看这两个用法。

复制代码代码如下所示:
/ / __autoload用法
功能__autoload($ className)
{
为文件名= 。 / / 类的类名美元。类;
如果(is_file($文件名))
{
包含$文件名;
}
}

/ / spl_autoload_register用法
spl_autoload_register('load_class);

功能load_class($ className)
{
为文件名= 。 / / 类的类名美元。类;
如果(is_file($文件名))
{
包含$文件名;
}
}


spl_autoload_register()的使用是不可言喻的好:
(1)自动加载对象比较方便,很多框架都这样做:

复制代码代码如下所示:
类classautoloader {
公共功能__construct(){
spl_autoload_register(阵列($,'loader '));
}
私有函数加载器($ className){
echo'trying负荷','通过',是美元,__method__,();
美元包括类名,PHP的;
}
}

自动装弹机=新classautoloader(美元);

$ obj =新一班();
$ obj =新班();


(2)你必须知道,__autoload()函数只能存在一次,spl_autoload_register(),当然,可以登记多个功能

复制代码代码如下所示:
函数A(){
include'a.php;
}
函数B(){
include'b.php;
}
spl_autoload_register(A);
spl_autoload_register(B);


(3)SPL功能非常丰富,提供了更多的功能,如spl_autoload_unregister(),注册功能注销,spl_autoload_functions(),返回所有注册等功能。


参见PHP参考手册:SPL函数列表。

小心 uff1a

如果__autoload功能已经在你的程序中实现的,它必须在__autoload stack.because明确注册
的spl_autoload_register()函数将取代在Zend引擎的__autoload功能spl_autoload()或()spl_autoload_call

复制代码代码如下所示:

* __autoload方法失败后spl_autoload_register,因为autoload_func函数指针已指向spl_autoload方法
* _autoload方法可以通过下面的方法添加到autoload_functions列表
* /
spl_autoload_register('__autoload);