• PHP中include()与require()的区别说明


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

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

    他们两个的用途是完全一样的,不一定非得哪个放在最前面哪个放在中间。他们最根本的区别在于错误处理的方式不一样。

    require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
    include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。

    以下为补充:

    1. include有返回值,而require没有。

    2. include()包括并运行指定文件 在处理失败时include() 产生一个警告,被导入的程序代码都会被执行,而且这些程序在执行的时候会拥有和源文件中呼叫到include()语句的位置相同的变量范围。你可以导入同一个服务器中的静态页面。

    3. include_once()的作用和include()是几乎相同的
    唯一的差别在于include_once()会先检查要导入的档案是不是已经在该程序中的其它地方被导入过了,如果有的话就不会再次重复导入(这项功能有时候是很重要的,比方说要导入的里面宣告了一些你自行定义好的函数,那么如果在同一个程序重复导入这个文件,在第二次导入的时候便会发生错误讯息,因为PHP不允许相同名称的函数被重复宣告第二次)。

    4. require()会将目标文件的内容读入,并且把自己本身代换成这些读入的内容 在处理失败时require() 则导致一个致命错。
    这个读入并且代换的动作是在PHP引擎编译你的程序代码的时候发生的,而不是发生在PHP引擎开始执行编译好的程序代码的时候(PHP 3.0引擎的工作方式是编译一行执行一行,但是到了PHP 4.0以后就有所改变了,PHP 4.0是先把整个程序代码全部编译完成后,再将这些编译好的程序代码一次执行完毕,在编译的过程中不会执行任何程序代码)。require()通常来导入静态的内容,而include()则适合用导入动态的程序代码。

    5. 如同include_once(),require_once()会先检查目标文件的内容是不是在之前就已经导入过了,如果是的话,便不会再次重复导入同样的内容。

    5. require是无条件包含也就是如果一个流程里加入require,无论条件成立与否都会先执行require。

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

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

    include和require有什么区别?

    这个题目可以称得上php开发面试中的必考题目,网上也有各种答案和解释。但是我当时却真的想不起来了。

    现在回头想这个问题,突然有了新的认识:

    PHP作为优秀的开源程序,她所提供的函数从名称上必定会尽可能地表达出这个函数的作用。那么理解这两个函数的区别就容易多了。

    require 的英文意思是 需要,有赖于。如果使用了这条语句,也就是告诉PHP内核,我这个程序需要这个文件,有赖于这个文件。或者通俗点儿讲就是:我要她!所以,PHP如果发现require参数中的文件不存在的话,就会报fatal error,并且停止执行下面的语句。

    include 的英文意思是 包括,包含。如果使用了这条语句,也就是告诉PHP内核,程序执行时,把这个文件包含进来。通俗点儿讲就是:带上她!所以,PHP如果找不到的话,仅仅会提示说,找不到她,无法带上她。而不会停止下面脚本的执行,因为我们并没有告诉PHP内核,下面的程序有赖于这个子文件。

  • 相关阅读:
    ThingsBoard 二次开发之源码分析 5如何接收 MQTT 连接
    物联网平台 ThingsKit
    ThingsBoard 3.3.4 发布
    ThingsBoard 二次开发之源码分析 4启动分析 3
    ThingsBoard 二次开发之源码分析 2启动分析 1
    ThingsBoard 3.2.2 发布
    ThingsBoard 3.2 发布
    11亿条数据压缩到12GB,TDengine在陕煤矿山项目的落地实践
    15倍提升 & 40倍存储优化,TDengine在领益智造的实践
    经验分享 | TDengine在智能船舶领域的实践手册
  • 原文地址:https://www.cnblogs.com/as3lib/p/6395977.html
Copyright © 2020-2023  润新知