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 相关文章推荐
PHP6 mysql连接方式说明
Feb 09 PHP
用php随机生成福彩双色球号码的2种方法
Feb 04 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
自己写的php curl库实现整站克隆功能
Feb 12 PHP
PHP全局变量与超级全局变量区别分析
Apr 01 PHP
PHP书写格式详解(必看)
May 23 PHP
CakePHP框架Model函数定义方法示例
Aug 04 PHP
Laravel 5.5基于内置的Auth模块实现前后台登陆详解
Dec 21 PHP
PHP+Ajax实现的检测用户名功能简单示例
Feb 12 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
Jul 08 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
Nov 23 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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 URL路由类实例
2013/11/12 PHP
php图像处理类实例
2015/07/28 PHP
24条货真价实的PHP代码优化技巧
2016/07/28 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
Laravel登录失败次数限制的实现方法
2020/08/26 PHP
javawscript 三级菜单的实现原理
2009/07/01 Javascript
Javascript学习笔记二 之 变量
2010/12/15 Javascript
鼠标滑上去后图片放大浮出效果的js代码
2011/05/28 Javascript
Javascript 面向对象编程(coolshell)
2012/03/18 Javascript
js实现倒计时(距离结束还有)示例代码
2013/07/24 Javascript
window.open()实现post传递参数
2015/03/12 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
js仿支付宝多方框输入支付密码效果
2016/09/27 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
JavaScript数据结构之广义表的定义与表示方法详解
2017/04/12 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
小程序登录/注册页面设计的实现代码
2019/05/24 Javascript
vue语法自动转typescript(解放双手)
2019/09/18 Javascript
[04:27]DOTA2官方论坛水友赛集锦
2013/09/16 DOTA
Python动态导入模块的方法实例分析
2018/06/28 Python
Python中pandas dataframe删除一行或一列:drop函数详解
2018/07/03 Python
idea创建springMVC框架和配置小文件的教程图解
2018/09/18 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
django框架用户权限中的session缓存到redis中的方法
2019/08/06 Python
Python 内置变量和函数的查看及说明介绍
2019/12/25 Python
Python+OpenCV图像处理—— 色彩空间转换
2020/10/22 Python
使用Html5、CSS实现文字阴影效果
2018/01/17 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
护理不良事件检讨书
2014/02/06 职场文书
高一学生期末评语
2014/04/25 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
群众路线个人剖析材料
2014/10/07 职场文书
专家推荐信范文
2015/03/26 职场文书
老公出轨后的保证书
2015/05/08 职场文书
2016机关干部作风建设心得体会
2016/01/21 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL