【转】php中include()和require()的区别
1.引用文件方式
对 include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换 了require()语句。这就意味着如果有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高。另一方面,如果每次执行代码时读取不同的文件,或者有通过一组文件叠代的循环,就使用include(),因为可以给想要包括的文件名设置一个变量。
2.是否有条件引用
在PHP变成中,include()与require()的功能相同,但在用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:
1 if($something){ 2 include("somefile"); 3 }
但不管$something取何值,下面的代码将把文件somefile包含进文件里:
1 if($something){ 2 require("somefile"); 3 }
下面的这个有趣的例子充分说明了这两个函数之间的不同。
1 $i = 1; 2 while ($i < 3) { 3 require("somefile.$i"); 4 $i++; 5 }
在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include():
1 $i = 1; 2 while ($i < 3) { 3 include("somefile.$i"); 4 $i++; 5 }
3.报错
用例子来说话,写两个php文件,名字为test1.php 和test2.php,注意相同的目录中,不要存在一个名字是test999.php的文件。
test.php <?PHP include (”test999.php”); echo “abc”; ?> test2.php <?PHP require(”test999.php”) echo “abc”; ?>
浏览第一个文件,因为没有找到test999.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
Warning: include(test1aaa.php) [function.include]: failed to open stream: No such file or directory in D:WebSite est.php on line 2
Warning: include() [function.include]: Failed opening ‘test1aaa.php’ for inclusion (include_path=’.;C:php5pear’) in D:WebSite est.php on line 2
abc
浏览第二个文件,因为没有找到test999.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
Warning: require(test1aaa.php) [function.require]: failed to open stream: No such file or directory in D:WebSite est.php on line 2
Fatal error: require() [function.require]: Failed opening required ‘test1aaa.php’ (include_path=’.;C:php5pear’) in D:WebSite est.php on line 2
现在就能很清楚的知道include和require的区别:include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码,require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。
安装moogodb
什么是作用域, 什么是闭包, 什么是原型链,什么是递归, 什么是函数函数声明,什么是函数表达式,继承,this 指向
前端框架Vue、angular、React的优点和缺
判断终端是IOS 或 是Android
VS code终端错位
安装Flutter
web直传OSS设置 头部信息【坑】
从零创建react项目
webpack报错vue-template-compiler 版本不对
- 最新文章
-
约束条件下的多元回归
高维度下的数据科学—线性空间(上)
多重共线性的解决方法之——岭回归与LASSO
多元线性回归的预测
开机"Invalid partition table"错误之重装系统过程
GCC 和 G++ 的学习笔记
C++二叉树的序列化与反序列化
Intro to Online machine learning
快排的各种写法:递归/非递归 + 双指针/挖坑法
集群安装python工具包出现“[Error 28] No space left on device“问题
- 热门文章
-
【C++Primer Chapter9】 内存模型和名称空间(2)
【C++Primer Chapter9】 内存模型和名称空间(1)
【C++学习】cout对象<<输出语句中调用了函数,此函数中也有输出,会怎么显示?
【原创】task-oriented dialogues 面向任务型对话综述
安装SIMATIC_STEP_7_Professional_V14反复重启解决办法
算法笔记:(一)插入排序:直接插入排序(Straight Insertion Sort)
数据契约(DataContract)
Openlayers+Geoserver(一):项目介绍以及地图加载
Devexpress 汉化
access查询优化