学到这里,前面举过的例子,写的代码,我们都只是在一个文件里实现一个小小的功能。朋友们,你可以仔细想想,要想做一个功能强大的网站,可能把所有的代码都写在一个文件里吗?一个文件有一千行代码这个文件就很大了,有的网站几万行、几十万行、几百万行代码,它肯定是要写在很多很多文件里,看看我们的电脑C盘,是不是系统文件很多,道理是一样,不可能全写在一个文件里。
这节课教的知识,如何把多个php文件当成一个文件运行,让多个PHP文件建立紧密联系。
PHP提供了4个文件加载的语法形式:include, include_once, require, require_once;
楠神喜欢用得是require_once,这4个语法结构实现的功能是一样的,都是用于加载/引入/包含/载入一个外部文件到当前php代码中来。
先做个简单的例子演示:
网站根目录下有个1.php文件,就一行代码。
2.php文件下第2行用到require_once文件加载语法,它的作用是把1.php文件内容引入到2.php里。
在浏览器执行2.php,结果:先把1.php里的代码执行了,再继续执行2.php里的代码。
require_once可以加载其他后缀的文本文件,比如.HTML文件。
结果:
require_once是PHP的语法结构,也可以把它当做一个函数用,直接require_once('1.php');
有些朋友肯定会这样想,2.php文件把1.php和1.HTML的内容包含进来,代码不就变成这样的:
运行起来肯定是错的呀?
楠神刚开始学习的时候,也是觉着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的区别:
11.php文件不存在。
对四种文件加载语法的进一步了解:
include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。 所以与include(),require()比较,效率要低一些,因为他们至少得先判断一下这个文件是否已包含。
四种文件加载语法的区别想了解更多,可查看手册或网上搜索资料。下一节我们继续探讨加载的文件与父文件之间变量传输的问题。