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 相关文章推荐
PHP生成带有雪花背景的验证码
Oct 09 PHP
php关于array_multisort多维数组排序的使用说明
Jan 04 PHP
基于PHP导出Excel的小经验 完美解决乱码问题
Jun 10 PHP
php模板原理讲解
Nov 13 PHP
laravel 4安装及入门图文教程
Oct 29 PHP
php实现分页显示
Nov 03 PHP
PHP导出Excel实例讲解
Jan 24 PHP
php版微信自动获取收货地址api用法示例
Sep 22 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
yii2中关于加密解密的那些事儿
Jun 12 PHP
php5.x禁用eval的操作方法
Oct 19 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网页木马一枚 附PHP木马的防范方法
2009/10/09 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
laravel安装zend opcache加速器教程
2015/03/02 PHP
php版微信公众号接口实现发红包的方法
2016/10/14 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
jquery实现html页面 div 假分页有原理有代码
2014/09/06 Javascript
JS输入用户名自动显示邮箱后缀列表的方法
2015/01/27 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
基于javascript实现仿百度输入框自动匹配功能
2016/01/03 Javascript
javascript禁止超链接跳转的方法
2016/02/02 Javascript
js 实现一些跨浏览器的事件方法详解及实例
2016/10/27 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
require.js与bootstrap结合实现简单的页面登录和页面跳转功能
2017/05/12 Javascript
vue mint-ui学习笔记之picker的使用
2017/10/11 Javascript
学习Vue组件实例
2018/04/28 Javascript
解决layui-open关闭自身窗口的问题
2019/09/10 Javascript
vue项目实现图片上传功能
2019/12/23 Javascript
Vue跨域请求问题解决方案过程解析
2020/08/07 Javascript
Python 递归函数详解及实例
2016/12/27 Python
Python使用QQ邮箱发送Email的方法实例
2017/02/09 Python
python try except 捕获所有异常的实例
2018/10/18 Python
对python使用telnet实现弱密码登录的方法详解
2019/01/26 Python
pandas.DataFrame的pivot()和unstack()实现行转列
2019/07/06 Python
DataFrame 数据合并实现(merge,join,concat)
2020/06/14 Python
HTML5 Web 存储详解
2016/09/16 HTML / CSS
详解HTML5新增标签
2017/11/27 HTML / CSS
千元咖啡店的创业计划书范文
2013/12/29 职场文书
大学生职业生涯规划方案
2014/01/03 职场文书
企业趣味活动方案
2014/08/21 职场文书
小学六一儿童节活动方案
2014/08/27 职场文书
迎国庆演讲稿
2014/09/05 职场文书
保研推荐信范文
2015/03/25 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
爱国影片观后感
2015/06/18 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书
MySQL数据管理操作示例讲解
2022/12/24 MySQL