`

PHP中include和require的区别详解

    博客分类:
  • PHP
 
阅读更多

PHP中include和require的区别详解

 

1、概要

   require()语句的性能与include()相类似,都是包括运行指定文件。不同之处在于:对include()语句来说,在执行文件时每次都要进行读取评估;而对于require()来说,文件只处理一次(实际上,文件内容替换require()语句)。这就意味着如果可能执行多次的代码,则使用require()效率比较高。另外一方面,如果每次执行代码时是读取不同的文件,或者有通过一组文件迭代的循环,就使用include()语句。

  require的使用方法如:require("myfile.php"),这个语句通常放在PHP脚本程序的最前面。PHP程序在执行前,就会读入require()语句所引入的文件,使它变成PHP脚本文件的一部分。include使用方法和require一样如:include("myfile.php"),而这个语句一般是放在流程控制的处理区段中。PHP脚本文件在读到include()语句时,将它包含的文件读取进来。这种方式,可以把程式执行时的流程简单化。

  • incluce在用到时加载
  • require在一开始就加载
  • _once后缀表示已加载的不加载

  PHP系统在加载PHP程序时有一个伪编译过程,可使程序运行速度加快。但incluce的文档仍为解释执行。include的文件中出错了,主程序继续往下执行,require的文件出错了,主程序也停了,所以包含的文件出错对系统影响不大的话(如界面文件)就用include,否则用require。

  require()和include()语句是语言结构,不是真正的函数,可以像php中其他的语言结构一样,例如echo()可以使用echo("ab")形式,也可以使用echo "abc"形式输出字符串abc。require()和include()语句也可以不加圆括号而直接加参数。

  include_once()和require_once()语句也是在脚本执行期间包括运行指定文件。此行为和include()语句及require()类似,使用方法也一样。唯一区别是如果该文件中的代码已经被包括了,则不会再次包括。这两个语句应该用于在脚本执行期间,同一个文件有可能被包括超过一次的情况下,确保它只被包括一次,以避免函数重定义以及变量重新赋值等问题。

2、详情

2.1 报错

  include引入文件的时候,如果碰到错误,会给出提示,并继续运行下边的代码。

  require引入文件的时候,如果碰到错误,会给出提示,并停止运行下边的代码。

  用例子来说话,写两个php文件,名字为test-include.php和test-require.php,注意相同的目录中,不要存在一个名字是test-nothing.php的文件。

test-include.php

<?php

include 'test-nothing.php';

echo 'abc';

?>

 

test-require.php

<?php

require 'test-nothing.php';

echo 'abc';

?>

  浏览http://localhost/test-include.php,因为没有找到test-nothing.php文件,我们看到了报错信息,同时,报错信息的下边显示了abc,你看到的可能是类似下边的情况:

Warning: include(test-nothing.php) [function.include]: failed to open stream: No such file or directory in D:\www\test-include.php on line 2

Warning: include() [function.include]: Failed opening 'test-nothing.php' for inclusion (include_path='.;C:\php5\pear') in D:\www\test-include.php on line 2

abc

浏览http://localhost/test-require.php,因为没有找到test-nothing.php文件,我们看到了报错信息,但是,报错信息的下边没有显示abc,你看到的可能是类似下边的情况:

Warning: require(test-nothing.php) [function.require]: failed to open stream: No such file or directory in D:\www\test-require.php on line 2

Fatal error: require() [function.require]: Failed opening required 'test-nothing' (include_path='.;C:\php5\pear') in D:\www\test-require.php on line 2 

2.2 条件引用

  include()与require()的功能相同,用法上却有一些不同,include()是有条件包含函数,而require()则是无条件包含函数。

  例如下面例子,如果变量$somg为真,则将包含文件somefile.php: 

if($some){

  include 'somefile.php';

}

  但无论$some取何值,下面的代码将把文件somefile.php包含进文件里:

if($something){

  require 'somefile.php';

}

  下面的例子充分说明了这两个函数之间的不同:

$i = 1;

while ($i < 3) {

  require "somefile.$i.php";

  $i++;

}

  可以从以上这段代码中看出,每一次循环的时候,程序都将把同一个文件包含进去,很显然这不是我们想要的,可以看出这段代码希望在每次循环时,将不同的文件包含进来,如果要完成这个功能,只能使用函数include():

$i = 1;

while ($i < 3) {

  include "somefile.$i.php";

  $i++;

}

2.3 文件引用方式

  include()执行时需要引用的文件每次都要进行读取和评估,require()执行时需要引用的文件只处理一次(实际上执行时需要引用的文件内容替换了require()语句)可以看出若有包含这些指令之一的代码和可能执行多次的代码,则使用require()效率比较高,若每次执行代码时相读取不同的文件或者有通过一组文件叠代的循环,就使用include(),可以给想要包括的文件名设置变量,当参数为 include()时使用这个变量。

 

 

本文版权归虾皮★csAxp和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

分享到:
评论

相关推荐

    PHP中include与require使用方法区别详解

    在PHP变成中,include()与require()的功能相同,include(include_once) 与 require(require_once)都是把把包含的文件代码读入到指定位置来,但是二者再用法上有区别:(include()是有条件包含函数,而require()...

    PHP中require和include路径问题详解

    主要介绍了PHP中require和include路径问题详解,十分详细,需要的朋友可以参考下

    PHP autoload使用方法及步骤详解

    我们知道在PHP4里面,当我们使用一个类的时候,必须将该类所以文件使用include或require加进来,这样我们就可以使用类了。 而对于PHP5来说也可以使用在PHP4里面的方式,将类文件包进来,但当有了__autoload之后,...

    Laravel实现autoload方法详解

    用了一阵Laravel后发现很少有include和require,觉得有点奇怪,思考Laravel是怎么完成文件导入的。 其实Laravel依旧还是用include或者require的,只是都写在一个函数里了。 就像这样: function autoload($path){ ...

    php之可变函数的实例详解

    可变函数不能用于例如 echo,print,unset(),isset(),empty(),include,require 以及类似的语言结构。需要使用自己的包装函数来将这些结构用作可变函数。 class Foo { function Variable() { $name = 'Bar';...

    PHP autoload 机制详解

    PHP在魔术函数__autoload()方法出现以前,如果你要在一个程序文件中实例化100个对象,那么你必须用include或者require包含进来100个类文件,或者你把这100个类定义在同一个类文件中——相信这个文件一定会非常大。...

    PHP基础讲义pdf版含视频下载地址。

    目 录 1 ...2. include_require详解 124 3. 魔术引号与递归转义 127 4. 错误报告设置 129 5. 函数封装 131 6. 贴吧主页开发 133 7. 贴吧回复页开发 135 8. 时间戳格式化 136 9. 回复数量之sql优化 137

    详解PHP文件的自动加载(autoloading)

    传统上,在PHP里,当我们要用到一个class文件的时候,我们都得在文档头部require或者include一下: &lt;?php require_once('../includes/functions.php'); require_once('../includes/database.php'); require_once...

    PHP自动加载机制实例详解

    在php中,我们一般使用 require, requre_once, include, include_once 这四个命令来加载其他php文件,这在一般小型的php文件中是没有任何问题的,相信每个初学者都会遇到这样的应用场景:使用一个 Db.php 来定义...

    php生成zip压缩文件的方法详解

    复制代码 代码如下:require_once “./include/zip.php”; $zip = new PHPZip(); //$zip -&gt; createZip(“要压缩的文件夹目录地址”, “压缩后的文件名.zip”); //只生成不自动下载 $zip -&gt; downloadZip(“要压缩的...

    基于PHP常用函数的用法详解

    复制代码 代码如下:&lt;?...d月份几号数字,D星期几...//include,include_once.require,require_once//require(“file.php”) 在PHP程序执行前就会先读入require所指定引进的文件,如出现错误是致命的。//include(“file.

    深入PHP autoload机制的详解

    在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例 子: 复制代码 代码如下:/* Person.class.php */&lt;?phpclass Person {var $name, $age; function __...

    phpmailer发送gmail邮件实例详解

    复制代码 代码如下:&lt;...&lt;head&gt;&lt;title&gt;PHPMailer – SMTP (Gmail) basic ...require_once(‘../class.phpmailer.php’);//include(“class.smtp.php”); // optional, gets called from within class.php

    PHP可变函数的使用详解

    变量函数不能用于语言结构,例如 echo() ,print() ,unset() ,isset() ,empty() ,include() ,require() 以及类似的语句。需要使用自己的包装函数来将这些结构用作变量函数。 Example #1 可变函数示例 复制...

    PHPExcel-1.8.7z

    PHPExcel 基本用法详解 复制代码 1.header header("Content-Type:application/vnd.ms-excel"); header("Content-Disposition:attachment;filename=sample.xls"); header("Pragma:no-cache"); ...

    php网络开发完全手册

    2.7.1 使用require和require_once语句 2.7.1 进行文件包含 42 2.7.2 使用include与include_once语句 2.7.2 进行文件包含 44 2.8 小结 45 第3章 PHP的数据类型与操作 46 3.1 数据类型的介绍 46 3.1.1 标量数据类型 46...

    php中inlcude()性能对比详解

    PHP程序员最常用的两个函数莫过于require_once和include了,通过这两个函数,我们可以使用其他类库中定义的类等对象。但很多人在使用包含相同目录下的其他文件时,仅仅简单使用下面的代码进行文件引用

    PHP autoload与spl_autoload自动加载机制的深入理解

    在PHP5之前,如果需要使用一个类,只需要直接使用include/require将其包含进来即可。下面是一个实际的例 子:复制代码 代码如下:/* Person.class.php */&lt;?phpclass Person {var $name, $age;function __construct...

Global site tag (gtag.js) - Google Analytics