require和include与php有什么区别?

时间:2009-02-27 19:07:29

标签: php include

我想知道何时应该使用includerequire以及每个人的优势。

8 个答案:

答案 0 :(得分:29)

require要求,include包含。

根据手册:

  

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

答案 1 :(得分:4)

正如其他人所说,如果“require”找不到它正在查找的文件,执行将停止。如果include没有提交它正在查找的文件,则执行将继续。

通常,在导入代码/类/函数库时应使用require。如果你试图调用一个函数,实例化一个类等,并且定义不存在,那么坏事就会发生。因此,您要求 php包含您的文件,如果不能,则停止。

当您使用PHP输出内容或以其他方式执行代码时使用include,如果它不运行,则不一定会破坏以后的代码。典型的例子是在模型/视图/控制器框架中实现视图。在视图中不应定义任何新内容,也不应更改应用程序状态。因此,可以使用include,因为失败不会破坏应用程序中发生的其他事情。

一个小切线。关于include与require vs. require_once vs. include_once的性能有很多相互矛盾的信息和错误信息。它们在不同的情况/用例下表现完全不同。这是您真正需要在自己的应用程序中对差异进行基准测试的地方之一。

答案 2 :(得分:3)

区别在于: 如果无法找到资源,则包含不会失败。老实说,有点愚蠢,包括存在,因为如果你试图加载一个资源,你几乎指望它在那里。如果你打算使用任何东西,我建议总是使用require_once,这样你就不会遇到冲突(即,如果另一个脚本需要相同的文件),你的代码总是按预期工作,因为你知道你的资源包括在那里(否则它是失败的)。

答案 3 :(得分:1)

如果文件是可选的,请包含它。例如,您可能有一个文件'breaking-news.txt',它会在有突发新闻时创建,但在没有突发新闻时不存在。如果没有突发新闻,它可以包括在没有脚本破坏的情况下。

如果该文件的其余部分需要该文件才能正常运行,则需要该文件。

答案 4 :(得分:0)

http://www.alt-php-faq.org/local/78/

与include()不同,require()将始终读入目标文件,即使它所在的行永远不会执行。如果要有条件地包含文件,请使用include()。条件语句不会影响require()。但是,如果不执行require()所在的行,则不会执行目标文件中的任何代码。

答案 5 :(得分:0)

如果我们使用require,我们必须确保文件在那个时代存在,而在包含的情况下则不需要。但请尽量确保文件存在。

答案 6 :(得分:0)

Include and require are identical, except upon failure:

require will produce a fatal error (E_COMPILE_ERROR) and stop the script
include will only produce a warning (E_WARNING) and the script will continue

你可以通过考试来理解 包括( “test.php的”); echo“\ n这行将打印”;

输出:警告:include(test.php):无法打开流:/ var / www / .......中没有这样的文件或目录。 此行将打印

需要( “test.php的”); 回声“\ n这条线将被打印”; 警告:require(test.php):无法打开流:/ var / www /....

中没有这样的文件或目录

答案 7 :(得分:-1)

Require()include()在处理方面相同 故障。但是,require()会导致致命错误,而不是 允许处理页面。即include将允许脚本 继续。