PHP中include()与require()以及两者的_once()的区别简析
好久没写东西了,阿萌这次找了以前的笔记,摸了这一篇文章分享给大家,关于include()、require()、include_once()、require_once()的用法区别。
首先介绍下include()与require()这两个函数吧:
这两个函数的功能非常相似,都是在一个PHP文件中引入另一个PHP文件。也就是会获取inlude指定文件中存在的所有内容,复制到使用include语句的文件中。
在处理上的区别是,require()会在PHP程序执行前,就先读入require所指定的文件。而include()会放在流程控制的处理部分中,也就是当PHP执行到include文件时,才将指定的文件读入。
用通俗易懂的话说就是,include在用到的时候才加载,而require在一开始就加载了。
所以在运行机制上,require()的效率相较于include()会稍微高一些。但是也正因为这种特性,include可以应用到条件语句内执行,而require()因为在程序被执行前就先引入文件,所以即使设定了判断语句来执行require(),无论true还是false,都会被执行。
举个实际例子大家应该就能明白:
if($flag){ require 'otherfile1.php'; include 'otherfile2.php'; } /* *无论变量flag 真假如何,otherfile1.php都会被执行。 *而otherfile2.php则会根据flag的取值判断是否执行。 */
$i=0; while ($i < 3) { require "otherfile$i.php"; include "otherfile$i.php"; $i++; } /* *这里想要完成的是取otherfile0.php、otherfile1.php、otherfile2.php这三个文件。 *但是require这里的语句只会执行一次取otherfile0.php文件。 *而include则会正确的完成所需要的功能。 */
因此,如果出现类似于随机调用,或者文件迭代的循环,则使用include()。
但其实这两个函数最大的区别在于错误处理方面,require()如果所引用的文件出现错误的话,那么程序会中断执行,并显示致命错误,而include()则不会中断,只是显示一个警告错误。
下面来介绍下include_once()、require_once():
两个函数的区别还是和上面所说的一样,这里说下加了once后和原来的函数的改变。
这两个函数会先检查目标文件的内容是不是在之前就已经导入过了,如果为真,那么久不会重复导入同样的内容,也就是相同的文件只会被导入一次。
最后,题外话,包含文件的函数省去了大量的工作,而且为结构化提供了方便,例如当你所有文件的头部都是一样内容的时候,则可以使用包含文件去处理,这样既省力又方便修改,在如今各个方面都能灵活运用到这项功能,可以多思考思考。