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和ACCESS写聊天室(一)
Oct 09 PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 PHP
PHP 数组教程 定义数组
Oct 23 PHP
PHP中基本符号及使用方法
Mar 23 PHP
php中将时间差转换为字符串提示的实现代码
Aug 08 PHP
写出高质量的PHP程序
Feb 04 PHP
基于PHP Web开发MVC框架的Smarty使用说明
Apr 19 PHP
朋友网关于QQ相关的PHP代码(研究QQ的绝佳资料)
Jan 26 PHP
PHP+MySQL存储数据常见中文乱码问题小结
Jun 13 PHP
Yii+MYSQL锁表防止并发情况下重复数据的方法
Jul 14 PHP
PHP常用函数总结(180多个)
Dec 25 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
phpize的深入理解
2013/06/03 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
2019/05/08 PHP
PHP使用CURL实现下载文件功能示例
2019/06/03 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
IE6图片加载的一个BUG解决方法
2010/07/13 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
web 前端常用组件之Layer弹出层组件
2016/09/22 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
折叠菜单及选择器的运用
2017/02/03 Javascript
JavaScript实现弹出广告功能
2017/03/30 Javascript
jQuery简单实现向列表动态添加新元素的方法示例
2017/12/25 jQuery
微信小程序实现人脸检测功能
2018/05/25 Javascript
如何解决React官方脚手架不支持Less的问题(小结)
2018/09/12 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
JavaScript封闭函数及常用内置对象示例
2019/05/13 Javascript
微信小程序实现锚点跳转
2020/11/23 Javascript
Python中声明只包含一个元素的元组数据方法
2014/08/25 Python
Python程序中使用SQLAlchemy时出现乱码的解决方案
2015/04/24 Python
Python多进程并发(multiprocessing)用法实例详解
2015/06/02 Python
Python中Scrapy爬虫图片处理详解
2017/11/29 Python
python实现代码统计器
2019/09/19 Python
python selenium自动化测试框架搭建的方法步骤
2020/06/14 Python
python 穷举指定长度的密码例子
2020/04/02 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
Python-split()函数实例用法讲解
2020/12/18 Python
CSS3实现缺角矩形,折角矩形以及缺角边框
2019/12/20 HTML / CSS
新浪微博实习心得体会
2014/01/27 职场文书
岗位竞聘书范文
2014/03/31 职场文书
电影雨中的树观后感
2015/06/15 职场文书
2016年教师节特级教师获奖感言
2015/12/09 职场文书
2019年工作总结范文
2019/05/21 职场文书
教你漂亮打印Pandas DataFrames和Series
2021/05/29 Python
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android