谈谈PHP的自动加载自动加载机制
如何使用__autoload 1:这是最常用的方法。根据类名找出类文件,然后要求_one复制代码如下: function _ _ autoload($ class _ name){ $ path=str _ replace(' _ ','/',$ class _ name);require _ once $路径。PHP ';}//Http/File/Interface . PHP文件$a=新的Http_File_Interface()将自动加载到此处;这种方法的优点是简单易用。当然也有缺点,就是类名和文件路径是强制约定的,所以在修改文件结构的时候,需要修改类名。__autoload(直接映射法)的使用方法2如下: $ map=array(' http _ file _ interface '=' c :/PHP/http/file/interface . PHP ');function _ _ autoload($ class _ name){ if(isset($ map[$ class _ name]){ require _ once $ map[$ class _ name];} }//c :/PHP/Http/File/Interface . PHP文件$a=new Http_File_Interface()将自动加载到此处;这种方法的优点是类名和文件路径只由一个映射维护,所以当文件结构发生变化时,不需要修改类名,只需要修改映射中对应的项即可。与以前的方法相比,这种方法的缺点是当文件较多时,维护这种映射非常麻烦。也许您会考虑使用json或单个文件进行维护。您可能会想到使用框架来维护或构建这样的映射。spl _ autoload _ _ autoload最大的缺陷就是不能有多种自动加载方式。想想下面的场景。你的项目是指别人的项目。您的项目有_ _个自动加载,其他人的项目也有_ _个自动加载,因此这两个_ _个自动加载冲突。解决方法是将__autoload修改为a,这无疑是非常麻烦的。因此,我们迫切需要使用一个自动加载调用栈,让spl的自动加载系列功能出现。您可以使用spl_autoload_register注册多个自定义自动加载功能。如果你的PHP版本大于5.1,可以先用spl_autoload了解spl的几个功能:。
spl _自动加载是_自动加载()的默认实现,它会去包含路径中寻找$class_name(.php/Inc .)Spl _自动加载实现自动加载:复制代码代码如下: /*http.php*/?服务器端编程语言(Professional Hypertext Preprocessor的缩写)类http {公共函数调用名(){ echo '这是http ';} } /*test.php*/?PHP set _ include _ path('/home/ye剑锋/hancode/');//这里需要将路径放入包括spl _ autoload(' http ');//寻找/家/耶剑锋/hancode/http。PHP $ a=new http();$ a-call name();Spl _自动加载_寄存器将函数注册到SPL _ _自动装载函数栈中,直接看一个例子:复制代码代码如下: /*http.php*/?服务器端编程语言(Professional Hypertext Preprocessor的缩写)类http {公共函数调用名(){ echo '这是http ';} } /*test.php*/?PHP spl _ autoload _ register(函数($ class){ if($ class==' http '){ require _ once '(/home/ye剑锋/hancode/http。PHP’);} });$a=新http();$ a-call name();spl _自动加载_调用调用spl _自动加载_寄存器中注册的调用函数,看下面的例子复制代码代码如下: /*http.php*/?服务器端编程语言(Professional Hypertext Preprocessor的缩写)类http {公共函数调用名(){ echo '这是http ';} } /*http2.php*/?服务器端编程语言(Professional Hypertext Preprocessor的缩写)类http {公共函数调用名(){ echo '这是http 2 ';} } /*test.php*/?PHP spl _ autoload _ register(函数($ class){ if($ class==' http '){ require _ once '(/home/ye剑锋/hancode/http。PHP’);} if($ class==' http 2 '){ require _ once '(/home/ye)剑锋/hancode/http 2。PHP’);} });spl _ auto _ call(' http 2 ');$a=新http();$ a-call name();//这个时候会输出这是http2的spl _ auto _寄存器这个函数使得我们不使用_ _自动加载,使用自定义的函数来进行自动加载成为可能。这个方法现在是经常使用到的曾德。的自动装卸机模块就使用了这个方法。摘录其中对应的代码复制代码代码如下: spl _ autoload _ register(array(_ _ CLASS _ _,‘autoload’));公共静态函数自动加载($class) { ….} 建议参考文章:关于古波斯语的自动装载机制,前面有篇文章//www .JB 51。net/article/31399。html文件的后缀有详细分析。关于自动装载的自动加载机制,这篇文章//www .JB 51。net/article/31279。html文件的后缀说得非常详细,从底层开始分析。
版权声明:谈谈PHP的自动加载自动加载机制是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。