在PHP中:

什么时候应该使用require和include? 什么时候应该使用require_once vs. include_once?


当前回答

要求生成致命错误,停止下一行执行,而没有找到文件。

包括生成警告,但没有停止下一行执行,而没有找到文件。

Require_once do与require do相同,但它将检查文件是否已经加载或是否要执行。

Include_once do与include do相同,但它将检查文件是否已经加载或是否要执行。

注意:include_once或require_once可能用于在特定脚本执行期间包含同一个文件并对其进行多次计算的情况,因此在这种情况下,它可能有助于避免诸如函数重新定义、变量值重新赋值等问题。

其他回答

7年后的2018年,答案揭晓

这个问题是七年前提出的,没有一个答案能对这个问题提供实际帮助。在现代PHP编程中,您主要只使用require_once一次来包含自动加载器类(通常是编写器自动加载器),它将加载所有的类和函数(函数文件需要显式地添加到编写器中。Json文件可在所有其他文件)。如果你的类不能从自动加载器加载,你可以使用require_once来加载它。

有些场合我们需要使用require。例如,如果你有一个非常大的数组定义,而你不想把它添加到你的类定义源代码中,你可以:

 <?php
// arry.php
return ['x'=>'y'];

 <?php
//main.php
$arr= require 'arry.php'

如果你打算包含的文件包含一些可执行的文件或声明了一些变量,你几乎总是需要使用require,因为如果你使用require_once除了第一个地方,你的代码将不会被执行和/或你的变量将不会无声地初始化,导致绝对难以精确定位的错误。

实际上,include和include_once没有实际用例。

Use

需要 当你的应用程序需要这个文件时,例如一个重要的消息模板或一个包含配置变量的文件,如果没有这些文件应用程序将会崩溃。 require_once 当文件包含的内容会在后续包含时产生错误时,例如。 Function important() {/* important code */}在你的应用程序中肯定是需要的,但由于函数不能被重新声明,所以不应该再次包含。 包括 当文件不是必需的,应用程序流程应该继续时,没有找到,例如 对于模板引用当前作用域的变量或其他东西非常有用 include_once 可选的依赖关系,会在后续加载时产生错误,或者可能远程文件包含,由于HTTP开销,您不希望发生两次

但基本上,什么时候用哪种取决于你。

应该将类和函数定义组织在文件中。

使用require_once()加载依赖项(类、函数、常量)。

使用require()加载类似模板的文件。

使用include_once()加载可选依赖项(类、函数、常量)。

使用include()加载可选的模板类文件。

1 -如果文件不是,"require"和"require_once"会抛出致命错误 存在并停止脚本执行

2 - "include"和"include_once"抛出警告并执行 仍在继续

3 - "require_once"和"include_once",顾名思义, 如果文件已经包含,则将不包含该文件 "require", "require_once", "include"或"include_once"

只需使用require和include。

因为想想如何使用include_once或require_once。 查找保存包含的或必需的PHP文件的日志数据。 这比include和require要慢。

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

就像这样用…