PHP中spl_autoload_register()与__autoload()有什么区别

介绍

这篇文章将为大家详细讲解有关PHP中spl_autoload_register()与__autoload()有什么区别,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

代码如下:


//__autoload用法
__autoload函数($ classname)
{
,,,$ filename=啊?类/案删蛔约旱摹? classname .class.php"
,,,如果(is_file(文件名)美元)
,,,{
,,,,,,,包括美元文件名;
,,,}
}

//spl_autoload_register用法
spl_autoload_register (& # 39; load_class& # 39;);

函数load_class ($ classname)
{
,,,$ filename=啊?类/案删蛔约旱摹? classname .class.php"
,,,如果(is_file(文件名)美元)
,,,{
,,,,,,,包括美元文件名;
,,,}
}

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

代码如下:


类ClassAutoloader {
,,,公共函数__construct () {
,,,,,,,spl_autoload_register(数组($ this & # 39;装载机# 39;));
,,,}
,,,私有函数加载程序($ className) {
,,,,,,,回声& # 39;试图加载& # 39;$ className, & # 39;通过& # 39;、__METHOD__“() \ n"
,,,,,,,包括$ className。& # 39;。php # 39;;
,,,}
}

自动装卸机=new ClassAutoloader美元();

obj美元=new Class1 ();
obj美元=new Class2 ();

(2)你要知道__autoload()函数只能存在一次啊,spl_autoload_register()当然能注册多个函数

代码如下:


函数(){
,,,包括& # 39;a.php& # 39;;
}
函数b () {
,,,包括& # 39;b.php& # 39;;
}
spl_autoload_register(& # 39;一个# 39;);
spl_autoload_register (& # 39; b # 39;);

(3) SPL函数很丰富,提供了更多功能,如spl_autoload_unregister()注销已经注册的函数,spl_autoload_functions()返回所有已经注册的函数等。

 PHP中spl_autoload_register()与__autoload()有什么区别“> <br/> <br/>详见PHP参考手册:关于SPL函数列表。<br/> <br/>注意:<br/> <br/>如果在你的程序中已经实现了__autoload函数,它必须显式注册到__autoload栈中。因为<br/> spl_autoload_register()函数会将Zend引擎中的__autoload函数取代为spl_autoload()或spl_autoload_call () <br/> <br/> </p> <p>代码如下:</p> <p> <br/>/* * <br/> * __autoload方法在spl_autoload_register后会失效,因为autoload_func函数指针已指向spl_autoload方法<br/> *可以通过下面的方法来把_autoload方法加入autoload_functions列表<br/> */<br/> spl_autoload_register (& # 39; __autoload& # 39;);<br/> </p> <p class=关于PHP中spl_autoload_register()与__autoload()有什么区别就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看的到。

PHP中spl_autoload_register()与__autoload()有什么区别