第四章:第22节 PHP流程控制结构-文件加载

更新于:2017-02-20 19:39:57

学到这里,前面举过的例子,写的代码,我们都只是在一个文件里实现一个小小的功能。朋友们,你可以仔细想想,要想做一个功能强大的网站,可能把所有的代码都写在一个文件里吗?一个文件有一千行代码这个文件就很大了,有的网站几万行、几十万行、几百万行代码,它肯定是要写在很多很多文件里,看看我们的电脑C盘,是不是系统文件很多,道理是一样,不可能全写在一个文件里。


这节课教的知识,如何把多个php文件当成一个文件运行,让多个PHP文件建立紧密联系。


PHP提供了4个文件加载的语法形式:include,  include_once,  requirerequire_once;


楠神喜欢用得是require_once,这4个语法结构实现的功能是一样的,都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。


先做个简单的例子演示:


网站根目录下有个1.php文件,就一行代码。


1.png


2.php文件下第2行用到require_once文件加载语法,它的作用是把1.php文件内容引入到2.php里。


1.png


在浏览器执行2.php,结果:先把1.php里的代码执行了,再继续执行2.php里的代码。


1.png

require_once可以加载其他后缀的文本文件,比如.HTML文件。


1.png


1.png


结果:


1.png


require_once是PHP的语法结构,也可以把它当做一个函数用,直接require_once('1.php');


有些朋友肯定会这样想,2.php文件把1.php和1.HTML的内容包含进来,代码不就变成这样的:

1.png

运行起来肯定是错的呀?


楠神刚开始学习的时候,也是觉着require_once是直接把代码包含进来,然后一块执行的,其实不然。


文件加载执行过程:

· 从require_once语句处退出php脚本模式(进入html代码模式)

· 载入require_once语句所设定的文件中的代码,并执行之(如同在当前文件中一样)

· 退出html模式重新进入php脚本模式,继续之后的代码


四种文件加载语法的区别:


include、include_once、require、require_once的区别是一个经典的面试题,楠神简单说下它们的区别。


在两个方面有细微区别:

1,如果加载文件失败,则有不同的处理规则;include和require不同

2,如果加载文件重复,则有不同的处理规则;XXX和XXX_once不同;


require 和 include的区别:如果被包含文件不存在,即引用失败(出错)时,include发出警告并继续执行后续代码,require直接终止。


include_once 和include的区别:前者能够保证不会被重复加载。


require_once 和 require的区别:前者能够保证不会被重复加载。


楠神为什么爱用require_once,加载文件不存在我就不让它运行了,require_once可以做到。当我写程序代码非常多时,难免会出现重复加载,假如有个文件里我专门用来写函数的,定义函数的代码不能出现两次,不然就会报错,require_once可以避免函数重定义。文件如果不小心用include、require加载了自己,就会陷入死循环。


通过例子看require 和include的区别:

1.png


11.php文件不存在。


1.png


1.png

对四种文件加载语法的进一步了解:


include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。 所以与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。


四种文件加载语法的区别想了解更多,可查看手册或网上搜索资料。下一节我们继续探讨加载的文件与父文件之间变量传输的问题。


本节学习代码》》》