`

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常用函数及方法详解: date()函数、include:require 语句.md

    通过以上的介绍,我们对PHP中的`date()`函数以及`include`和`require`语句有了更深入的理解。这些知识点对于进行PHP开发非常重要,掌握它们可以帮助开发者更好地处理日期时间相关的逻辑以及有效地组织代码结构。

    PHP中require和include路径问题详解

    在PHP编程中,`require`和`include`都是用于在脚本中引入其他文件的关键字,它们的作用相似,但略有不同。主要的区别在于处理错误的方式:`require`会在找不到文件时抛出致命错误并停止脚本执行,而`include`只会...

    PHP脚本编程安全详解教程

    本教程《PHP脚本编程安全详解》旨在帮助开发者理解和掌握如何在PHP开发中实现最佳的安全实践。 1. **输入验证和过滤**:PHP脚本容易受到SQL注入、跨站脚本(XSS)等攻击。通过使用预处理语句、参数绑定(例如PDO和...

    详解php缓存技术用于开发网站

    ### 详解PHP缓存技术在网站开发中的应用 在当今高度依赖互联网的时代,网站的响应速度和用户体验成为了吸引用户的关键因素。随着网站流量的增加,数据库的查询压力也随之增大,这不仅影响了网站的性能,还可能导致...

    最新PHP笔试试题.pdf

    include和require都是PHP中的语句,用于包含外部文件。include语句在编译时(compile-time)包含文件,而require语句在运行时(run-time)包含文件。 6. print()和echo() print()和echo()都是PHP中的输出函数。...

    详解php 缓存技术

    1. 文件缓存(File Cache):利用文件系统来存储数据,如PHP的文件包含(include/require)功能实际上就是一种文件缓存。 2. 数据库缓存(Database Cache):例如使用Memcached或Redis等内存数据库存储SQL查询结果,...

    php类型问题

    ### PHP中的Include与Require详解 #### 一、引言 在PHP编程中,`include`与`require`是非常常见的文件包含函数,它们用于在当前脚本中嵌入其他PHP脚本或静态文件。通过合理使用这两种函数,可以极大提高代码的复用...

    header跳转和include包含问题详解

    在PHP编程中,`header()`函数和`include()`或`require()`函数是非常常见的两种操作,它们各自有着不同的用途和机制。在处理网页跳转和页面元素的组合时,正确理解和使用它们至关重要。本文将深入探讨这两种功能及其...

    Zend Framework入门教程之Zend_Config组件用法详解

    我们可以使用include或者require语句将配置文件加载进来,并传入Zend_Config类中,创建实例。 ```php &lt;?php require_once("Zend/Loader.php"); Zend_Loader::loadClass('Zend_Config'); $filename = 'config.php'; ...

    PHP中简体 PHP语法.docx

    3. **`require_once()`与`include_once()`**:这两个函数与`require()`和`include()`类似,但是它们只会包含一次文件,即使多次调用也只包含一次。 **注意**:当使用`require()`或`include()`包含文件时,PHP会暂时...

    PHP中一些有意思的小知识

    PHP中的`require()`和`include()`都用于引入其他PHP文件,但`require()`在文件不存在或者包含失败时会抛出致命错误,而`include()`只会发出警告。这意味着`require()`更严格,确保了关键文件的加载,而`include()`...

    php __autoload自动加载功能详解

    这样,你无需在每个文件顶部都使用 `require_once` 或 `include_once` 引入类文件,只需在项目中设置一次`__autoload`,就可以确保在需要时正确加载类。 二、`__autoload` 函数定义与使用 要实现`__autoload`,你...

    php命令行(cli)模式下报require 加载路径错误的解决方法

    这可能导致在使用`require`或`include`等引入其他文件时遇到路径问题,特别是当使用相对路径时。如果这些引入的文件依赖于当前工作目录,那么在命令行中执行可能找不到正确的文件位置,从而导致错误。 【解决...

    php5面向对象详解

    18. **自动加载类**:通过spl_autoload_register()函数注册自动加载函数,避免手动require或include类文件。 19. **对象串行化**:序列化(serialize)将对象转换为字符串,便于存储和传输;反序列化(unserialize...

    php开发简洁模板,适合网页快速开发

    "inc"通常代表"include",在PHP中,include或require语句用于引入其他PHP文件,以便重用代码或包含全局函数、类定义、配置信息等。在这个简洁模板中,"inc"文件夹很可能包含了常用的头部、底部、导航栏等部分,以及...

    php动态网站开发教案.zip

    例如,使用echo或print语句输出动态数据,或者使用PHP的include或require函数来包含头部、底部等静态页面部分。 八、表单处理 动态网站通常涉及用户交互,PHP能够处理HTTP请求,尤其是POST和GET方法提交的表单数据...

    PHP入门知识点大全

    `include`和`include_once`有类似的区别,但`include`在出错时不会停止程序执行。`require`和`require_once`通常置于文件顶部。 5. **变量类型**:PHP是动态类型的,不需要预先声明变量的类型。变量的数据类型在...

Global site tag (gtag.js) - Google Analytics