PHP中include require include_once require_once 的区别

转载 2015年07月08日 17:08:04

准备在一个PHP的开源程序上做点二次开发,借此机会想对PHP进行一下系统的学习。曾经也大概的了解过一点PHP,但因为工作中一直没有用到这门语言,所以慢慢也放下了。走了这么久的弯路才明白,项目驱动是最好的学习方式。只有当你需要用到一门语言的时候,去学习它才会有比较好的效果,而且也不容易忘记。

在二次开发之前得先了解一下原先程序的整个结构,在看源码的过程中发现有大量的引入语句,记得之前就对PHP中的include和require的区别一直很含糊,不能再用这样的态度对学习,因此特地停下来了解一下PHP和include和require的联系和区别。

首先include和require都是引入指定的文件。_once表示只引入一次,即之前已经引入过的不再引入。

例如1.php中有句简单的打印 echo ‘1</br>’ 下面的程序运行的结果:

<?php
include '1.php';
require '1.php';

include_once '1.php';
require_once '1.php';

将是

1

1

而不是

1

1

1

1

如果将_once引入的语句放在include和require上面,结果将是

1

1

1

1

include与require的区别

1、加载失败的处理方式不同

include与require除了在处理引入文件的方式不同外,最大的区别就是:

include在引入不存文件时产生一个警告且脚本还会继续执行,

require则会导致一个致命性错误且脚本停止执行。

<?php
  include 'hello.php';
  echo 'world';
?>

 

如果hello.php不存在,echo ‘world’这句是可以继续执行的。

<?php
  require 'hello.php';
  echo 'world';
?>

 

如果hello.php不存在,echo ‘hello’这句是不会执行的,到require时就停止了。

2、include()是有条件包含函数,而 require()则是无条件包含函数。

if(FALSE){ 
    include 'file.php'; //file.php不会被引入 
} 

if(FALSE){ 
    require 'file.php'; //file.php将会被引入

 

3、文件引用方式

include有返回值,而require没有

$retVal = include(’somefile.php’);
if(!empty($retVal)){
  echo “文件包含成功”;
}else{
  echo “文件包含失败”;
}

include()执行时需要引用的文件每次都要进行读取和评估,
require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)

 

可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,
若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),

require通常使用方法,这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。

include通常使用方法,这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化

另外关于include和require后面是否加括号的问题,

理论上来说:include和require后面加不加括号对执行结果没有区别,但是加上括号效率较低,所以后面能不加括号就不加括号。


转自:http://liuzhichao.com/p/1743.html

(非常重要)如何正确理解PHP之include,include_once,require,require_once等包含作用域

我们为大家总结的PHP include作用域的问题包括:PHP include 变量作用域和函数、类的作用域等方面的问题。希望对大家有所帮助。 很多程序员在使用PHP语言进行实际编程时,通常只会...
  • u013707844
  • u013707844
  • 2014年05月21日 15:57
  • 1523

PHP中include和require的区别详解

1、概要    require()语句的性能与include()相类似,都是包括并运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取和评估;而对于requir...
  • shenpengchao
  • shenpengchao
  • 2016年08月26日 10:45
  • 9661

php中使用include(require)嵌套包含文件时的一些注意问题

/**  * Author:RDP  * My mail:abel1314520@gmail.com  * My blog:  http://blog.teamhaka.com  */ ...
  • xiaoxiaodongxie
  • xiaoxiaodongxie
  • 2016年07月05日 08:12
  • 1246

从源码区别include 与require 的不同

首先我们手动编译好能查看执行过程中对应的OPCODE的php,然后写如下代码
  • clh604
  • clh604
  • 2014年12月09日 18:18
  • 857

php中return,require,include加括号和不加括号的区别

php中return,require,include加括号和不加括号的区别 2010年6月30日小旅发表评论阅读评论 在整理代码规范的时候看到这么一句,return返回值尽量不...
  • zha_stef
  • zha_stef
  • 2014年08月14日 15:27
  • 1914

文件明明存在,却require_once(./*.php)出错

问题描述: 刚装好PMA,在火狐中访问,会看到白板,什么都没输出。使用IE可以看到500错误(服务器内部错误) 打开报错后发现 Warning: require_once(./l...
  • Lankecms
  • Lankecms
  • 2017年02月04日 17:31
  • 2379

include和require 性能优化

1.引用文件方式 对include()来说,在include()执行时文件每次都要进行读取和评估;而对于require()来说,文件只处理一次(实际上,文件内容替换了require()语句)。这...
  • u011598153
  • u011598153
  • 2014年06月24日 11:16
  • 1263

PHP中的require_once()函数引入的文件找不到

今天用php写一个简单的Android登录的服务端代码,遇到一个特别郁闷的事,使用require_once()引入到php文件中的文件出现错误提示,找不到文件。...
  • bingjianIT
  • bingjianIT
  • 2016年10月09日 11:30
  • 4623

php include,require等4种引入文件方式的总结

php引入文件与jsp类似。inlcude();include_once();require();require_once(). 总结一下这4种引入方式。...
  • SchopenhauerZhang
  • SchopenhauerZhang
  • 2017年02月10日 20:14
  • 913

php中的include和require的区别

主要关注红色标记语句即可。 The include (or require) statement takes all the text/code/markup that exists in th...
  • xiebaochun
  • xiebaochun
  • 2014年07月05日 21:26
  • 2192
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP中include require include_once require_once 的区别
举报原因:
原因补充:

(最多只允许输入30个字)