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中的Class的几点个人看法
Oct 09 PHP
PHP中的string类型使用说明
Jul 27 PHP
IP攻击升级,程序改进以对付新的攻击
Nov 23 PHP
php基础教程 php内置函数实例教程
Aug 21 PHP
php eval函数一句话木马代码
May 21 PHP
[原创]php逐行读取txt文件写入数组的方法
Jul 02 PHP
php session 写入数据库
Feb 13 PHP
Zend Framework开发入门经典教程
Mar 23 PHP
CI框架无限级分类+递归的实现代码
Nov 01 PHP
ThinkPHP 5.x远程命令执行漏洞复现
Sep 23 PHP
CentOS7系统搭建LAMP及更新PHP版本操作详解
Mar 26 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 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
一个数据采集类
2007/02/14 PHP
php adodb连接带密码access数据库实例,测试成功
2008/05/14 PHP
php在项目中寻找代码的坏味道(综艺命名)
2012/07/19 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
关于PHP中Session文件过多的问题及session文件保存位置
2016/03/17 PHP
javascript中substr,substring,slice.splice的区别说明
2010/11/25 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
常用一些Javascript判断函数
2012/08/14 Javascript
JS 添加千分位与去掉千分位的示例
2013/07/11 Javascript
JS自动倒计时30秒后按钮才可用(两种场景)
2015/08/31 Javascript
基于jquery实现的仿优酷图片轮播特效代码
2016/01/13 Javascript
javascript实现粘贴qq截图功能(clipboardData)
2016/05/29 Javascript
Angular2学习笔记——详解路由器模型(Router)
2016/12/02 Javascript
利用策略模式与装饰模式扩展JavaScript表单验证功能
2017/02/14 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
jsTree事件和交互以及插件plugins详解
2017/08/29 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
python写程序统计词频的方法
2019/07/29 Python
python属于哪种语言
2020/08/16 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
表单button的outline在firefox浏览器下的问题
2012/12/24 HTML / CSS
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
校园摄影活动策划方案
2014/02/05 职场文书
房屋租赁授权委托书范本
2014/09/20 职场文书
单位未婚证明范本
2014/11/25 职场文书
教师听课评语大全
2014/12/31 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
个人年终总结开头
2015/03/06 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
python如何在word中存储本地图片
2021/04/07 Python
python生成可执行exe控制Microsip自动填写号码并拨打功能
2021/06/21 Python
Java 垃圾回收超详细讲解记忆集和卡表
2022/04/08 Java/Android