协慌网

登录 贡献 社区

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

在 PHP 中:

  • 我什么时候应该使用require vs. include
  • 我什么时候应该使用require_onceinclude_once

答案

还有requireinclude_once

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

  1. 我什么时候应该使用require vs. include
  2. 我什么时候应该使用require_once vs. require

这里描述 1 的答案。

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

2 的答案可以在这里找到。

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

使用

  • 要求
    当您的应用程序需要该文件时,例如一个重要的消息模板或包含配置变量的文件,如果没有该配置变量应用程序将中断。

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

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

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

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

我的建议是在 99.9%的时间内使用require_once

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

如果您需要 / 包括在现场执行的代码,那是程序代码,您需要了解新的范例 。像面向对象编程,基于函数的编程或函数编程。

如果您已经在进行 OO 或函数式编程,那么使用include_once主要是在延迟堆栈中的位置发现错误 / 错误。您是否想知道函数do_cool_stuff()在以后调用它时是不可用的,或者您希望通过要求库可以获得该函数的时刻 ?通常,最好立即知道您需要和期望的东西是否不可用,所以只需使用require_once

或者,在现代 OOP 中,只需在使用时自动加载您的课程。