在PHP中:

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


当前回答

它们都是包含文件的方法。

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

例子:

Require 'filename'
Require_once 'filename'
Include 'filename'

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

Include_once 'filename'

当我用手机打字时,不要用大写字母。

其他回答

区别在于命令生成的错误。使用require,您想要使用的文件确实是必需的,因此如果找不到它,将生成一个E_ERROR。

require()与include()相同,除了失败时它也会产生致命的E_ERROR级别错误。

include只在失败时生成一个E_WARNING错误,该错误或多或少是沉默的。

因此,如果需要该文件才能使其余代码正常工作,并且您希望脚本失败,则使用该文件。


* _once ():

Include_once()可以在脚本的特定执行过程中多次包含和计算相同文件的情况下使用,因此在这种情况下,它可以帮助避免诸如函数重新定义、变量值重新赋值等问题。

当然,同样适用于require_once()。


引用:require(), include_once()

在PHP中,有4个类似的函数用于包含和要求文件:

include(): include()语句用于将一个文件的内容包含到另一个文件中。如果无法找到包含的文件,将生成警告,但脚本将继续执行。

require(): require()语句类似于include,但是如果找不到文件,它会生成一个致命错误。脚本将立即停止执行。

include_once(): include_once()语句与include相同,但它只包含文件一次,即使在同一个脚本中包含多次。

require_once(): require_once()语句与require相同,但它只包含文件一次,即使它在同一个脚本中包含多次。

简单来说:

当您希望包含一个文件并在文件丢失的情况下继续执行脚本时,使用include()。

当您需要包含一个文件并在文件丢失时停止执行脚本时,请使用require()。

当您希望只包含一次文件时,请使用include_once()或require_once(),以避免出现重复函数或变量的问题。

注意:一般情况下,建议使用require_once()而不是include_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没有实际用例。

对于可重用的PHP模板,使用“include”。使用“require”表示必需的库。

“*_once”很好,因为它检查文件是否已经加载,但它只在“require_once”中对我有意义。

Include()在未找到文件时将生成警告,但require_once()将生成致命错误。

另一件事是之前是否包含了file。然后require_once()将不再包含它。