手机版

php自动加载机制的深入分析

时间:2021-11-19 来源:互联网 编辑:宝哥软件园 浏览:

1.php 1中的自动加载方法。使用require、include、require_once、include_once手动加载。2.使用_ _自动加载进行自动加载。3.使用spl的自动加载进行自动加载和手动加载:当需要加载的文件很少时,我们可以使用第一个。很简单,没问题。复制的代码如下:require _ once ' a.phprequire _ once ' b.phprequire _ once ' c.php但是当有很多文件要加载时,这样做可以吗?当我们需要写十个或二十个require _一次或多次时,我们应该做什么?此时,我们可以使用__autoload方法来简化代码。_ _自动加载的实现:我们在测试目录下创建一个in.php文件,内容如下。复制的代码如下:测试下面的: echo ' I in . phpbr/';然后在测试目录下创建一个loader.php,内容如下。复制的代码如下://重载__autoload方法,自定义包含的类文件函数_ _ autoload($ class name){ $ class _ file=str ower($ class name)的路径。PHP ';if(file _ exists($ class _ file)){ require _ once($ class _ file);} } @ $ test=new in();//当您在这里执行时,您将输出span style=' font-family : aarial,Helvetica,无衬线'。我是受考验的in.php/SPAN。没问题,成功!我们也可以创建其他文件来加载,但是当需要很多文件并且需要区分目录时,该怎么办呢?此时,我们需要修改loader.php,我们可以使用映射来找到要加载的文件。复制代码如下: function _ _ autoload($ class _ name){ $ map=array(' index '=')。/include/index.php ',' in'='。/in . PHP ');if(file _ exists($ map[$ class _ name])isset($ map[$ class _ name]){ require _ once $ map[$ class _ name];} }新索引();这种方法的优点是类名和文件路径只由一个映射维护,所以当文件结构发生变化时,不需要修改类名,只需要修改映射中对应的项即可。但是,_ _自动加载在项目中只能使用一次。当您的项目引用另一个项目时,您的项目中有一个_ _自动加载,而其他项目中有一个_ _自动加载,因此这两个_ _自动加载会发生冲突。解决方案是将_ _ autoload修改为一个,这无疑非常麻烦,而且应用场景单一。spl的自动加载实现:spl的自动加载系列功能使用一个自动加载调用栈,可以使用spl_autoload_register注册多个自定义的自动加载功能,应用场景广泛

•在试验目录下建立in.php,内容如下复制代码代码如下:{公共函数索引(){ echo }中的phpclass我是试验下面的英寸PHP ';}}?在试验目录下建立loader.php,内容如下复制代码代码如下:phpset _ include _ path('/var/www/test/');//这里需要将路径放入包括sl _ autoload(' in ');//寻找/var/www/test/in。PHP $ in=new in();$ in-index();spl _自动加载_寄存器将函数注册到SPL _ _自动装载函数栈中,修改loader.php复制代码代码如下:函数AutoLoad($ class){ if($ class==' in '){ require _ once '(/var/www/test/in。PHP’);} } spl _ autoLoad _ register(' autoLoad ');$ a=new in();$ a-index();spl _自动加载_寄存器注册多个自定义的自动装载函数的应用首先在试验目录下建立多脏器功能不全综合征文件夹并建立inmod.mod.php内容如下:复制代码代码如下:mod { function _ _ construct(){ echo }中的phpclass我是多脏器功能不全综合征下的' in ';}}然后在试验目录下建立图书馆文件夹并建立inlib.lib.php内容如下:复制代码代码如下:phpclass inlib { function _ _ construct(){ echo '我是图书馆下的' in ';}}最后在试验目录下建立loader.php内容如下复制代码代码如下:phpc类加载器{/* * *自动加载类* @ param $类类名*/公共静态函数MODS($ class){ if($ class){ set _ include _ path('/var/www/test/MODS/');spl _ autoload _ extensions('。适度的PHP’);spl _ autoload(strtolow($ class));} }公共静态函数libs($ class){ if($ class){ set _ include _ path('/var/www/test/libs/');spl _ autoload _ extensions('。lib。PHP’);spl _ autoload(strtolow($ class));} }}spl_autoload_register(数组(' Loader ',' MODS ');spl_autoload_register(数组(“Loader”、“libs”);mod()中的new//输出SPAN style=' FONT-family : ' Times New Roman ';' FONT-SIZE: 14px '我是多脏器功能不全综合征下的in/SPan new inlib();//SPAN style=' FONT-FAMILY : Arial,Helvetica,无衬线'输出/SPANSPAN style=' FONT-FAMILY : ' Times New Roman ';' FONT-SIZE: 14px '我是图书馆下的in/SPAN

版权声明:php自动加载机制的深入分析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。