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 相关文章推荐
PHP5 的对象赋值机制介绍
Aug 02 PHP
PHP编码转换函数 自动转换字符集支持数组转换
Dec 16 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
ThinkPHP3.1新特性之命名范围的使用
Jun 19 PHP
PHP实现文件下载详解
Nov 27 PHP
php目录拷贝实现方法
Jul 10 PHP
WordPress中用于获取及自定义头像图片的PHP脚本详解
Dec 17 PHP
关于PHP通用返回值设置方法
Mar 31 PHP
PHP数据分析引擎计算余弦相似度算法示例
Aug 08 PHP
Laravel中的Auth模块详解
Aug 17 PHP
因str_replace导致的注入问题总结
Aug 08 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 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引用(&amp;)
2014/09/04 PHP
PHP循环遍历数组的3种方法list()、each()和while总结
2014/11/19 PHP
php数字运算验证码的实现代码
2015/07/30 PHP
PHP获取二叉树镜像的方法
2018/01/17 PHP
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
深入浅析JavaScript中对事件的三种监听方式
2015/09/29 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
JS中使用变量保存arguments对象的方法
2016/06/03 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
js实现获取鼠标当前的位置
2016/12/14 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
2016/12/26 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
vue+webpack模拟后台数据的示例代码
2018/07/26 Javascript
vue中用 async/await 来处理异步操作
2020/07/18 Javascript
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python 利用浏览器 Cookie 模拟登录的用户访问知乎的方法
2019/07/11 Python
什么是Python中的匿名函数
2020/06/02 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
Nanushka官网:匈牙利服装品牌
2019/08/14 全球购物
信息工程学院毕业生推荐信
2013/11/05 职场文书
总务岗位职责
2013/11/19 职场文书
师范生个人推荐信
2013/11/29 职场文书
简短证婚人证婚词
2014/01/09 职场文书
创意广告词
2014/03/17 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
学校端午节活动总结
2015/02/11 职场文书
综合测评个人总结
2015/03/03 职场文书
新兵入伍决心书
2015/09/22 职场文书
党组织关系的介绍信模板
2019/06/21 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python
Windows10安装Apache2.4的方法步骤
2022/06/25 Servers