PHP中include与require使用方法区别详解


Posted in PHP onOctober 19, 2013

在PHP变成中,include()与require()的功能相同,include(include_once) 与 require(require_once)都是把把包含的文件代码读入到指定位置来,但是二者再用法上有区别:(include()是有条件包含函数,而require()则是无条件包含函数)

1, 使用方式不同

(1) require 的使用方法如 require("requireFile.php"); 。这个函式通常放在 PHP 程式的最前面,PHP 程式在执行前,就会先读入 require 所指定引入的档案,使它变成 PHP 程式网页的一部份。常用的函式,亦可以这个方法将它引入网页中。引入是无条件的,发生在程序执行前,不管条件是否成立都要导入(可能不执行)。
(2) include 使用方法如 include("includeFile.php"); 。这个函式一般是放在流程控制的处理区段中。PHP 程式网页在读到 include 的档案时,才将它读进来。这种方式,可以把程式执行时的流程简单化。引入是有条件的,发生在程序执行时,只有条件成立时才导入(可以简化编译生成的代码)。

例如在下面的一个例子中,如果变量$somgthing为真,则将包含文件somefile:

if($something){
include("somefile");
}

但不管$something取何值,下面的代码将把文件somefile包含进文件里:
if($something){
require("somefile");
}

下面的这个有趣的例子充分说明了这两个函数之间的不同。
$i = 1;
while ($i < 3) {
require("somefile.$i");
$i++;
}

在这段代码中,每一次循环的时候,程序都将把同一个文件包含进去。很显然这不是程序员的初衷,从代码中我们可以看出这段代码希望在每次循环时,将不同的文件包含进来。如果要完成这个功能,必须求助函数include():
$i = 1;
while ($i < 3) {
include("somefile.$i");
$i++;
}

2. 执行时报错方式不同

include和require的区别:include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码,require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。例如下面例子:

 
写两个php文件,名字为test1.php  和test2.php,注意相同的目录中,不要存在一个名字是test3.php的文件。

test1.php

<?PHP
include  (”test3.php”);
echo  “abc”;
?>

test2.php
<?PHP
require (”test3.php”)
echo  “abc”;
?>

浏览第一个文件,因为没有找到test999.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:
Warning: include(test3.php) [function.include]: failed to open stream: No such file or directory in D:\WebSite\test.php on line 2

Warning: include() [function.include]: Failed opening ‘test3.php' for inclusion (include_path='.;C:\php5\pear') in D:\WebSite\test.php on line 2
abc (下面的被执行了)

浏览第二个文件,因为没有找到test3.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:
Warning: require(test3.php) [function.require]: failed to open stream: No such file or directory in D:\WebSite\test2.php on line 2

Fatal error: require() [function.require]: Failed opening required ‘test3.php' (include_path='.;C:\php5\pear') in D:\WebSite\test.php on line 2

下面的未被执行,直接结束
总之,include时执行时调用的,是一个过程行为,有条件的,而require是一个预置行为,无条件的。

PHP 相关文章推荐
NOT NULL 和NULL
Jan 15 PHP
php并发对MYSQL造成压力的解决方法
Feb 21 PHP
使用PHP实现下载CSS文件中的图片
Dec 06 PHP
php使用ftp远程上传文件类(完美解决主从文件同步问题的方法)
Sep 23 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
PHP实现表单提交时去除斜杠的方法
Dec 26 PHP
Yii2中添加全局函数的方法分析
May 04 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
PHP registerXPathNamespace()函数讲解
Feb 03 PHP
PHP框架实现WebSocket在线聊天通讯系统
Nov 21 PHP
php文件上传的简单实例
Oct 19 #PHP
php上传文件,创建递归目录的实例代码
Oct 18 #PHP
php用户注册页面利用js进行表单验证具体实例
Oct 17 #PHP
10 个经典PHP函数
Oct 17 #PHP
php中怎么搜索相关联数组键值及获取之
Oct 17 #PHP
php class类的用法详细总结
Oct 17 #PHP
div li的多行多列 无刷新分页示例代码
Oct 16 #PHP
You might like
php实现文件编码批量转换
2014/03/10 PHP
yii框架builder、update、delete使用方法
2014/04/30 PHP
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
js 动态为textbox添加下拉框数据源的方法
2014/04/24 Javascript
Javascript实现获取窗口的大小和位置代码分享
2014/12/04 Javascript
Bootstrap精简教程
2015/11/27 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)
2016/06/24 Javascript
原生js仿jquery animate动画效果
2016/07/13 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
js插件Jcrop自定义截取图片功能
2016/10/14 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
分享bootstrap学习笔记心得(组件及其属性)
2017/01/11 Javascript
使用Require.js封装原生js轮播图的实现代码
2017/06/15 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
js原生方法被覆盖,从新赋值原生的方法
2018/01/02 Javascript
微信小程序使用swiper组件实现类3D轮播图
2018/08/29 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
详解Vue之计算属性
2020/06/20 Javascript
简单介绍Python中用于求最小值的min()方法
2015/05/15 Python
python中pandas.DataFrame排除特定行方法示例
2017/03/12 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
基于pycharm 项目和项目文件命名规则的介绍
2021/01/15 Python
python推导式的使用方法实例
2021/02/28 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
C语言基础笔试题
2013/04/27 面试题
2014年财务工作自我评价
2014/09/23 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
小学国庆节活动总结
2015/03/23 职场文书
课题研究阶段性总结
2015/08/13 职场文书
教你怎么用Python selenium操作浏览器对象的基础API
2021/06/23 Python
一篇文章带你深入了解Mysql触发器
2021/08/02 MySQL
不同品牌、不同型号对讲机如何互相通联
2022/02/18 无线电
node快速搭建后台的实现步骤
2022/02/18 NodeJs