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 相关文章推荐
Content-type 的说明
Oct 09 PHP
PHP编程中八种常见的文件操作方式
Nov 19 PHP
php GeoIP的使用教程
Mar 09 PHP
PHP学习之字符串比较和查找
Apr 17 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
php jq jquery getJSON跨域提交数据完整版
Sep 13 PHP
ThinkPHP页面跳转success与error方法概述
Jun 25 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
PHP获取本周所有日期或者最近七天所有日期的方法
Jun 20 PHP
PHP实现的分解质因数操作示例
Aug 01 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
PHP判断是否是json字符串
Apr 01 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 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php上传apk后自动提取apk包信息的使用(示例下载)
2013/04/26 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
PHP实现文件下载详解
2014/11/27 PHP
php版微信小店调用api示例代码
2016/11/12 PHP
简短几句jquery代码的实现一个图片向上滚动切换
2011/09/02 Javascript
js和jquery中循环的退出和继续学习记录
2014/09/06 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
推荐25个超炫的jQuery网格插件
2014/11/28 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
jQuery按需加载轮播图(web前端性能优化)
2017/02/17 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
2017/04/01 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
React组件生命周期详解
2017/07/03 Javascript
详解angularjs获取元素以及angular.element()用法
2017/07/25 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
2017/12/27 Javascript
JavaScript设计模式之构造器模式(生成器模式)定义与用法实例分析
2018/07/26 Javascript
对Vue table 动态表格td可编辑的方法详解
2018/08/28 Javascript
详解JavaScript事件循环机制
2018/09/07 Javascript
vue实现图片懒加载的方法分析
2020/02/05 Javascript
浅析TypeScript 命名空间
2020/03/19 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
python str与repr的区别
2013/03/23 Python
Python将xml和xsl转换为html的方法
2015/03/10 Python
使用C++扩展Python的功能详解
2018/01/12 Python
Python3.5内置模块之shelve模块、xml模块、configparser模块、hashlib、hmac模块用法分析
2019/04/27 Python
Python smtp邮件发送模块用法教程
2020/06/15 Python
Python字符串及文本模式方法详解
2020/09/10 Python
如何实现一个自定义类的序列化
2012/05/22 面试题
趣味比赛活动方案
2014/02/15 职场文书
葛优非诚勿扰搞笑征婚台词
2014/03/17 职场文书
2014年仓库管理员工作总结
2014/11/18 职场文书
职场:企业印章管理制度(模板)
2019/10/18 职场文书
uniapp开发打包多端应用完整方法指南
2022/12/24 Javascript