首页 文章

require,include,require_once和include_once之间的区别?

提问于
浏览
1019

在PHP中:

  • 我应该何时使用 requireinclude

  • 我应该何时使用 require_onceinclude_once

27 回答

  • 17

    包括()

    它包含指定的文件 . 如果找不到文件并执行剩余的脚本,它将产生警告

    要求()

    它包含指定的文件 . 如果找不到文件并停止执行,它将产生致命错误

    include_once()的

    它包含指定的文件 . 已包含文件,将不再包含该文件 . 如果找不到文件并执行剩余的脚本,它将产生一个警告 .

    require_once()

    它包含指定的文件 . 已包含文件,将不再包含该文件 . 如果找不到文件并停止执行,它将产生致命错误 .

  • 9

    include() 将在找不到文件时生成警告,但 require_once() 将生成致命错误 .

    另一件事是如果之前包含文件 . 然后 require_once() 将不再包括它 .

  • 8

    manual

    require()与include()相同,除非失败,它还会产生致命的E_COMPILE_ERROR级别错误 . 换句话说,它将暂停脚本,而include()仅发出警告(E_WARNING),允许脚本继续 .

    _once() 变体也是如此 .

  • 8

    还有 requireinclude_once .

    所以你的问题应该是......

    • 我应该何时使用 requireinclude

    • 我应该何时使用 require_oncerequire

    回答1描述here .

    require()函数与include()相同,只是它以不同方式处理错误 . 如果发生错误,include()函数会生成警告,但脚本将继续执行 . require()生成致命错误,脚本将停止 .

    2的答案可以找到here .

    require_once()语句与require()相同,但PHP将检查文件是否已被包含,如果已包含,则不再包括(require)它 .

  • 347

    使用

    • require
      当您的申请需要该文件时,例如一个重要的消息模板或包含配置变量的文件,应用程序不会破坏它们 .

    • require_once
      当文件包含在后续包含时会产生错误的内容,例如 function important() { /* important code */} 在您的应用程序中绝对需要,但由于无法重新声明功能,因此不应再次包含 .

    • include当不需要文件时,应用程序流程应在未找到时继续,例如
      适用于引用当前范围或其他变量的模板

    • include_once
      可选的依赖项会在后续加载时产生错误,或者由于HTTP开销而不希望发生两次远程文件包含

    但基本上,由你来决定何时使用哪个 .

  • 7

    Include / Require您也可以多次包含同一个文件:

    require()与include()相同,除非失败,它还会产生致命的E_COMPILE_ERROR级别错误 . 换句话说,它将暂停脚本,而include()仅发出警告(E_WARNING),允许脚本继续 .

    require_once / include_once

    与include / require相同,但PHP将检查文件是否已被包含,如果已包含,则不再包括(require)它 .

  • 26

    您应该将类和函数定义保存在文件中 .

    使用require_once加载依赖项(类,函数,常量) .

    使用require加载类似模板的文件 .

  • 3

    我的建议是只使用 require_once 99.9%的时间 .

    使用 requireinclude 代替意味着您的代码不能在其他地方重复使用,即您实际使用的脚本实际上是代码,而不是提供类或某些函数库 .

    如果您需要/包括在现场执行的代码,那是程序代码,您需要 get to know a new paradigm . 像面向对象编程,基于函数的编程或函数编程 .

    如果您已经在进行OO或函数式编程,那么使用 include_once 主要是在延迟堆栈中发现错误/错误的位置 . 你想知道以后去打电话时函数 do_cool_stuff() 不可用,或者通过要求图书馆 the moment that you expect it to be available 吗?通常,它可用's best to know immediately if something you need and expect isn',所以只需使用 require_once .

    或者,在现代OOP中,只需autoload您的课程即可使用 .

  • 0

    _once函数与没有_once函数之间的区别:不再使用_once代码,而使用_once函数,PHP会跟踪包含的文件,并且只包含一次 .

    require和include之间的区别:如果找不到所需的文件,PHP将发出致命错误,而对于include,只会发出警告 .

  • 14

    如果 include() 无法包含该文件,则会发出警告,但脚本的其余部分将运行 .

    如果不能包含该文件, require() 将抛出 E_COMPILE_ERROR 并暂停该脚本 .

    include_once()require_once() 函数如果已包含该文件,则不会再次包含该文件 .

    请参阅以下文档页面:

  • 1226

    无论何时使用 require_once() 都可以在文件中使用,当您在当前文件中只需要一次调用时,可以包含另一个文件 . 在这个示例中,我有一个test1.php .

    <?php  
    echo "today is:".date("Y-m-d");  
    ?>
    

    在另一个我命名为test2.php的文件中

    <?php  
    require_once('test1.php');  
    require_once('test1.php');  
    ?>
    

    因为你正在观看需要test1文件两次的m,但文件将包含test1一次,而在第二次调用时,这将被忽略 . 没有停止会一次显示输出 .

    无论何时使用'include_once(),当您在当前文件中多次需要被调用文件时,可以在文件中使用`来包含另一个文件 . 在这个示例中,我有一个名为test3.php的文件 .

    <?php  
    echo "today is:".date("Y-m-d");  
    ?>
    

    在另一个我命名为test4.php的文件中

    <?php  
    include_once('test3.php');  
    include_once('test3.php');  
    ?>
    

    当你正在观看包含test3文件的m将包含文件一次但停止进一步执行 .

  • 28

    使用"include"可重用PHP模板 . 使用"require"表示所需的库 .

    “* _once”很好,因为它检查文件是否已经加载,但它只对我有用“require_once” .

  • 7

    不同之处在于命令生成的错误 . 对于 require ,您确实需要使用的文件,因此如果找不到,则会生成 E_ERROR .

    require()与include()相同,除非失败,它还会产生致命的E_ERROR级别错误 .

    include 只有在失败时才会生成 E_WARNING 错误,这个错误或多或少是无声的 .

    因此,如果需要文件使剩余的代码工作,请使用它您希望脚本失败该文件不可用 .


    对于 *_once()

    include_once()可用于在特定执行脚本期间可能包含和评估多个文件的情况,因此在这种情况下,它可以帮助避免诸如函数重定义,变量值重新分配等问题 .

    同样适用于 require_once() .


    参考:require()include_once()

  • 9

    使用require文件必须存在,如果不存在则会显示错误;而使用include - 如果文件不存在则则页面将继续加载 .

  • 4

    require 将产生致命错误(E_COMPILE_ERROR)并停止脚本 .

    include 只会产生警告(E_WARNING),脚本将继续 .

    当您可能需要多次包含被调用文件时, require_once 语句可用于在另一个语句中包含PHP文件 .

    如果a.php是一个PHP脚本,使用require_once()语句调用b.php,并且找不到b.php,则a.php会停止执行,从而导致致命错误 .

  • 7

    需要关键部件,如授权,包括所有其他部件 .

    多个包含只是非常糟糕的设计,必须要避免 . 所以,* _once并不重要 .

  • 2

    2018年7年后的答案

    这个问题是七年前提出的,没有一个答案能为这个问题提供实际帮助 . 在现代PHP编程中,你主要使用 required_once 只包含一次自动加载器类(通常是composer autoloader),它会加载你所有的类和函数(函数文件需要显式添加到 composer.json 文件中,以便在所有其他文件中可用) ) . 如果由于任何原因您的类无法从自动加载器加载,则使用 require_once 加载它 .

    这些天你只使用 require 来分割一大块PHP文件 . 这主要是一个大数组定义 . 在这种情况下,您只使用 require 而不是 require_once .

    <?php
    // arr.php
    return ['x'=>'y'];
    
     <?php
    //main.php
    $arr= require 'arry.php'
    

    如果您打算使用的文件包含可执行文件或声明某些变量,您几乎所有时间都需要使用_600664,因为如果您在其他地方使用_600665,您的代码将无法执行和/或您的变量将无法以静默方式启动,从而导致错误这是绝对难以确定的 .

    includeinclude_once 确实没有实际用例 .

  • 5

    我使用的功能如下:

    function doSomething() {
        require_once(xyz.php);
        ....
    }
    

    在xyz.php中声明了常量值 .

    我必须从另一个PHP脚本文件中调用这个doSomething()函数 .

    但是我在循环中调用此函数时观察到了行为,对于第一次迭代,doSomething()在 xyz.php 内获得了常量值,但是后来每次迭代 doSomething() 都无法获得 xyz.php 中声明的常量值 .

    我通过从 require_once() 切换到 include() 解决了我的问题,更新 doSomething() 代码如下:

    function doSomething() {
        include(xyz.php);
        ....
    }
    

    现在,对 doSomething() 的每次迭代调用都会获得 xyz.php 中定义的常量值 .

  • 4

    PSR-0 / PSR-4 自动加载器的时代,如果您只需要创建一些函数/类,则可能完全没有必要使用任何语句可用于您的代码(当然,如果仍然使用PHP作为模板引擎,您仍然需要在引导程序文件中使用 require_once autoloader本身和 include 模板) .

  • 3
    • 什么时候应该使用 requireinclude

    requireinclude 函数执行相同的任务,即包含和评估指定的文件,但区别是 require 将在指定的文件位置无效或任何错误时导致致命错误,而 include 将生成警告并继续执行代码 .

    因此,如果您尝试包含的文件是 heart of the system ,可能会使用 require 函数,并且可能会对其余代码造成巨大影响,并且当您尝试包含的文件很简单时,可以使用 include 函数文件包含一些不太重要的代码 .

    我的个人建议(对于不那么重要的代码)是在代码的各个地方使用 require 函数,因为它处于开发阶段,以便您可以调试代码,然后通过 include 函数替换所有 require 函数,然后再将其转移到 生产环境 环境中如果您错过了任何错误,它将不会影响最终用户,其余代码正确执行...

    • 什么时候应该使用 require_oncerequire

    requirerequire_once 之间的基本区别是 require_once 将检查文件是否已包含(如果已包含),则不包含该文件,而 require 函数将包含该文件,无论文件是否已包含在内 .

    因此,如果您想要一次又一次地包含一些代码而使用 require 函数,而如果您想在代码中只包含一些代码,请使用 require_once .

  • 0
    • 当您需要加载任何类,函数或依赖项时,请使用 require 函数 .

    • 如果要加载模板样式文件,请使用 include 函数

    如果您仍然感到困惑,请一直使用 require_once .

  • -1

    它们都是包含文件的方式:

    需要意味着它需要它 . Require_once意味着它需要它,但只需要它一次 . 包含意味着它将包含一个文件,但不需要它继续 .

    例子:

    需要'文件名'Require_once'filename'包含'文件名'

    还有一个include_once函数,它包含一次文件 .

    Include_once'filename'

    当我在手机上打字时,请不要使用大写字母 .

    感谢您的时间 .

  • -2

    基本上,如果你需要一个错误的路径,PHP会抛出一个致命错误并调用shutdown函数,但是当你包含一个错误的路径时,PHP会继续执行,但它只会显示一个警告,指出该文件不存在 .

    从英文单词require,PHP被告知页面或文件的执行取决于所需的文件 .

    根据我的经验,需要重要文件(例如配置文件,数据库类和其他重要实用程序)是常态 .

  • 278

    前几天我被问到PHP中include和require之间的区别是什么 . 它们似乎功能相同,但存在显着差异 .

    首先,既不包含也不要求是函数,它们是构造 . 因此没有必要使用像include('file.php')这样的括号来调用它们;相反,它更喜欢使用include'file.php' .

    当无法找到包含的文件时,include和require之间出现差异:include将发出警告(E_WARNING)并且脚本将继续,而require将发出致命错误(E_COMPILE_ERROR)并停止脚本 . 如果包含的文件对于正确运行的脚本的其余部分至关重要,那么您需要使用require .

    您应该在开发过程中拾取require抛出的任何致命错误,并在将脚本发布到野外之前解决它们;但是,如果不是直截了当,你可能会考虑使用include来制定计划B: -

    <?php
    if (@include 'file.php') {
        // Plan A
    } else {
        // Plan B - for when 'file.php' cannot be included
    }
    

    在这个示例中,include用于获取'file.php',但如果失败,我们使用@来抑制警告并执行一些替代代码 . 如果找不到文件,include将返回false .

    include_once和require_once分别表现得像include和require,除非它们只包含文件(如果尚未包含) . 否则,他们会抛出同样的错误 .

  • 19

    简而言之:

    • include: 包含一个文件并对其进行评估 . 如果找不到文件或无法读取文件,PHP将发出警告 .

    • include_once: 如果指定include_once,则PHP将确保它仅包含该文件一次 .

    • require: PHP将包含一个文件并对其进行评估 . 如果找不到或无法读取文件,则会生成致命错误 .

    • require_once: 至于include_once,但会生成致命错误而不是警告 .

    不一直使用include_once()和require_once()的原因是性能问题 . PHP跟踪已经存在的文件列表包括支持这些功能的功能 . 这需要记忆,因此在必要时使用这些功能而不是支持包含或要求 .

  • 0

    require 的开销大于 include ,因为它必须先解析文件 . 用 includes 替换 requires 通常是一种很好的优化技术 .

  • 0

    只需使用require和include .

    因为想想如何使用include_once或require_once . 那就是寻找保存包含或需要的PHP文件的日志数据 . 所以这比include和require慢 .

    if (!defined(php)) {
        include 'php';
        define(php, 1);
    }
    

    就这样使用......

相关问题