php的require和include有啥区别? [复制]
Posted
技术标签:
【中文标题】php的require和include有啥区别? [复制]【英文标题】:What is the difference between require and include with php? [duplicate]php的require和include有什么区别? [复制] 【发布时间】:2010-10-10 10:00:03 【问题描述】:我想知道什么时候应该使用include
或require
以及它们各自的优点。
【问题讨论】:
【参考方案1】: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/........中没有这样的文件或目录 此行将被打印
require("test.php"); echo "\n此行将被打印"; 警告:require(test.php):打开流失败:/var/www/....中没有这样的文件或目录。
【讨论】:
【参考方案2】:Require()
和include()
在处理上是一样的
失败。但是,require()
会导致致命错误,并且不会
允许处理页面。即包含将允许脚本
继续。
【讨论】:
include
和 require
都是语言结构。他们不使用括号。【参考方案3】:
简单来说,如果我们使用 require ,我们必须确保该文件在那个时代存在,而在 include 的情况下则没有必要。但请尝试确保文件存在。
【讨论】:
【参考方案4】:如果一个文件是可选的,包括它。例如,您可能有一个文件“break-news.txt”,它在有突发新闻时创建,但在没有突发新闻时不存在。如果没有突发新闻,它可以在没有脚本中断的情况下被包含在内。
如果脚本的其余部分需要该文件才能正常运行,则需要该文件。
【讨论】:
【参考方案5】:正如其他人所说,如果“require”没有找到它正在寻找的文件,则执行将停止。如果 include 没有归档它要查找的文件,则执行将继续。
一般来说,导入代码/类/函数库时应该使用require。如果您尝试调用一个函数、实例化一个类等,但定义不存在,就会发生坏事。因此,您要求 php 包含您的文件,如果不能,则停止。
当您使用 PHP 输出内容或以其他方式执行代码时使用 include,如果它不运行,则不一定会破坏以后的代码。典型的例子是在模型/视图/控制器框架中实现视图。视图中不应定义任何新内容,也不应更改应用程序状态。因此,使用 include 是可以的,因为失败不会破坏应用程序中发生的其他事情。
一个小切线。关于 include、require、require_once 和 include_once 的性能,有很多相互矛盾的信息和错误信息。它们在不同的情况/用例下表现完全不同。这是您真正需要在自己的应用程序中对差异进行基准测试的地方之一。
【讨论】:
感谢您提供包含的用例。以前不明白什么时候用。【参考方案6】:区别在于: 如果找不到资源,include 不会失败,require 会。老实说,完全存在 include 有点愚蠢,因为如果你试图加载一个资源,你几乎指望它在那里。如果您要使用任何东西,我建议您始终使用 require_once,这样您就不会遇到冲突(即,如果另一个脚本需要相同的文件)并且您的代码始终按预期工作,因为您知道自己的资源包括在那里(否则它会失败)。
【讨论】:
【参考方案7】:每http://www.alt-php-faq.org/local/78/:
与 include() 不同,require() 将始终读取目标文件,即使它所在的行从未执行。如果要有条件地包含文件,请使用 include()。条件语句不会影响 require()。但是,如果出现 require() 的那一行没有被执行,那么目标文件中的任何代码都不会被执行。
【讨论】:
include() 和 require() 之间的唯一区别是在失败时(即如果找不到文件), require() 会发出错误,而 include() 会发出警告。 【参考方案8】:require
需要,include
包括。
根据手册:
require() 与 include() 相同,但失败时会产生致命的 E_ERROR 级别错误。换句话说,它将停止脚本,而 include() 只发出一个警告 (E_WARNING) 允许脚本继续。
【讨论】:
虽然用途不同 :-) 没错,但有趣的是了解何时使用其中一个。以上是关于php的require和include有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章