PHP require和include之间有什么区别?

PHP require和include之间有什么区别?,php,Php,我知道PHP require、require once、include和include once的基本用法。但我对什么时候应该使用它们感到困惑 示例:我有3个文件,例如:settings.php、database.php和index.php 在database.php文件中,我写道: require_once 'settings.php'; require_once 'settings.php'; require_once 'database.php'; 然后在index.php中,我写道:

我知道PHP require、require once、include和include once的基本用法。但我对什么时候应该使用它们感到困惑

示例:我有3个文件,例如:settings.php、database.php和index.php

在database.php文件中,我写道:

require_once 'settings.php';
require_once 'settings.php';
require_once 'database.php';
然后在index.php中,我写道:

require_once 'settings.php';
require_once 'settings.php';
require_once 'database.php';

我加载settings.php两次,可以吗?使用这些函数有什么提示吗?

根据,您不会加载settings.php两次

require_once()语句是 与require()相同,但PHP将 检查文件是否已被删除 包括在内,如果包括在内,不包括在内 (需要)再次执行此操作

  • include
    包含一个文件,如果找不到该文件,则抛出警告

  • require
    包含一个文件,如果找不到该文件,则抛出致命错误

  • include_once
    require_once
    执行相同的操作,但前提是文件尚未加载

然而,需要一个
\u once
功能通常是设计不好的标志。您应该以一种明确定义包含内容的方式构建脚本


settings.php
选择一个位置以获得包含-可能是
index.php
。不需要在数据库中额外包含它。php

require\u一次
会检查文件是否已经包含,并且不会再次包含,所以不要担心它不会加载两次
settings.php

如果你的文件很重要,我认为你应该使用“require”,
但如果不是,我总是使用include,就像peka的回答

require包含一个文件,如果找不到该文件,将抛出一个致命错误。

在Php中使用include_once和require_once将一个页面添加到另一个页面示例:您想在edit page edit.Php中添加数据库连接page conn.Php您可以使用它。 但是include_once和require_once之间是不同的,如果include_once函数出现任何错误,它将警告您并执行代码,但是require_once函数发现任何错误,它将停止脚本并不执行代码


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


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

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


  • 可选的依赖项,这些依赖项会在后续加载时产生错误,或者可能会导致远程文件包含,由于HTTP开销,您不希望发生两次这种情况

差异:-
include()

include\u once()
的工作原理与
include()
相同,但我们使用include\u once(),如果文件已经包含,则不会再次包含它。 如果在Like:-
include_once'setting.php'中多次使用同一文件使用第二次
包含一次'setting.php'忽略它们

require()
工作方式与include()相同

require\u once()
如果文件已包含,则不会再次包含该文件

include()
include\u once()
生成警告,脚本将继续

require()
require\u once()
产生fatel错误并停止脚本


最好在脚本中使用
require\u once()
include()
require()
之间的区别出现在无法找到包含的文件时:
include()
将发出警告(E\u警告),脚本将继续,而
require()
将引发致命错误(E\u COMPILE\u error)并停止脚本。如果所包含的文件对于脚本的其余部分是否正确运行至关重要,则需要使用
require()


有关更多详细信息:

+1。不过,吹毛求疵/观点:我不认为我同意“需要一个
\u once
函数通常是设计糟糕的标志”。毕竟,自动装弹机也能做同样的事情。我想说,
\u once
应始终用于仅包含函数/类/常量声明的文件,而其他用于脚本片段。在这种情况下,我会说一次也不使用
\u
通常是[!]糟糕设计的标志
\u once
(在没有自动加载器的情况下),允许您的代码进行适当的模块化。(在这种特殊情况下,我同意它应该只包括一次,虽然。)@pinkgothic我不同意。自动加载器的工作原理是相同的,但如果它们值得,它们会在尝试包含之前进行
class\u exists()
检查。根据我的经验(阅读,也是我自己的经验!)
require_once()
通常意味着“我不确定这个文件是否已经包含在其他地方了,因为我对我的项目结构没有完全掌握。”,通过检查我将要包含的资源是否已经存在,无论是函数还是类,都可以防止对
\u once
的任何其他使用。也就是说,我确信在一些合法的情况下,执行
\u once
只是一个更快的解决方案。同意,您可以将include/requires包装到if块中,但这与PHP内部所做的工作相同(好吧,好吧,不是相同的工作,而是相同的原理),并且在这个过程中可读性变差。最终,这是一个问题