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()时使用这个变量。

include与require的区别?的更多相关文章

  1. php中include()和require()的区别

    1.引用文件方式 对 include()来说,在include()执行时文件每次都要进行读取和评估:而对于require()来说,文件只处理一次(实际上,文件内容替换 了require()语句.这就意 ...

  2. PHP中include和require的区别

    include和require的区别,其实两者没有太大的区别,如果要包含的文件不存在,include提示notice,然后继续执行下面的语句,require提示致命错误并且退出. 根据测试,win32 ...

  3. php引入文件(include 和require的区别)

    引入文件: 首先需要一个php文件: <?php class shao//类名必须和文件名相同!!! { public $xxx="666"; } $shili = new ...

  4. include和require的区别误区

    面试时总会被问到include和require的区别,回答的时候一般也是有以下几种区别: 1.include引入文件的时候,如果碰到错误,会给出警告,并继续运行下边的代码. require引入文件的时 ...

  5. php include 和require的区别与转码

    php include 和require的区别相同点:include和require 都能把另外一个文件包含到当前文件中.  不同点:使用include时,当包含的文件不存在时,系统会报出警告级别的错 ...

  6. php部分---include()与require()的区别、empty()与isset is_null的区别与用法详解

    include()与require()的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间.他们最根本的区别在于错误处理的方式不一样. 1.处理错误的方式: require()一个文件存在错误的话 ...

  7. include 和 require 的区别

    1. 首先不去介绍大家都知道的区别,百度上都进行了详细的说明,对于返回值的方面大家都很少提到. include 和 require 还有一个区别就是是否具有返回值.参见手册 对include 加载文件 ...

  8. include和require的区别

    include与require除了在处理引入文件的方式不同外,最大的区别就是:include在引入不存文件时产生一个警告且脚本还会继续执行,require则会导致一个致命性错误且脚本停止执行. inc ...

  9. php 中 include 与 require 的区别

    以下内容转自:https://blog.csdn.net/hsd2012/article/details/51089785 网上太多关于php中include与require区别.其实说的都是经不起验 ...

  10. PHP 中 include 和 require 的区别详解

    require() 语句的性能与 include() 相类似,都是包括并运行指定文件.除了处理失败的方式不同之外.require 在出错时产生 E_COMPILE_ERROR 级别的错误,终止脚本运行 ...

随机推荐

  1. Javascript的shift()和push(),unshift()和pop()方法简介

    栈方法: Javascript为数组专门提供了push()和pop()方法,以便实现类似栈的行为.来看下面的例子: var colors=new Array();       //创建一个数组 var ...

  2. mysql 定时任务

    mysql 5.1以上支持定时任务. SHOW VARIABLES LIKE 'event_scheduler';   检查是否已开启该功能 开启计划任务功能: SET GLOBAL event_sc ...

  3. FP error code老是忘记的看这里:只给出最常用的几个。

    把常见的几个记牢,不要在比赛时纠结. 错误2:输入文件未找到. 错误106:数据读入的格式错误,往往是读入语句出错. 错误200:被零除. 错误201:范围检查错误,数组越界. 错误202:栈溢出. ...

  4. 读取bmp图片数据

    public void getBMPImage(String source) throws Exception { clearNData(); //清除数据保存区 FileInputStream fs ...

  5. myeclipse项目上出现红色叹号

    右键选中项目:build path→configure build path (由于的我是在问题解决之后发表的博客,所以jar包上面的红色叉子不见了,只要选中红色的jar包,然后选择‘Remove’按 ...

  6. Mysql5.7.14安装配置

    Mysql5.7.14免安装版配置方法: 运行 在命令行中输入 mysqld install mysql5.7 安装成功后,启动mysql 在命令行中输入 net start mysql5.7 这个时 ...

  7. 如何编写自己的Arduino库?

    一开始写Arduino 的时候很不习惯,没有main函数,因为好多东西都被隐藏了.一直想搞清楚,以便编写自己的库文件.于是研究一下午,下面是一些总结. Arduino工程的初步认识 一.目录规范 当你 ...

  8. TweenMax学习一

    TweenMaxjs是一个性能很高的js动画框架,它与css3动画具有时间轴的概念.你可以很方便的把动画添加到一个时间轴队列里面去按照你需要的顺序去执行. 官网地址: http://greensock ...

  9. CSS之伪元素

    1. :first-line 向元素的首行文本添加样式,不必关心首行是元素节点还是文本节点 <style> body,htm,div,p{ margin:0; padding:0; } d ...

  10. android 屏幕分辨率 更改

    手头上有一个320x240的LCD.运行android时,显示内容过大,需要更改屏幕的分辨率. 参考链接 http://www.bkjia.com/Androidjc/899396.html http ...