包括、include_once、require 还是 require_once?

Posted

技术标签:

【中文标题】包括、include_once、require 还是 require_once?【英文标题】:include, include_once, require or require_once? 【发布时间】:2011-04-02 13:10:24 【问题描述】:

我有 php 文件,我在其中定义了服务器访问变量以及 mysql_connectmysql_select_db,因为这些函数经常在后端的几乎每个页面中使用,而我使用的是 include(),这是完美的现在为我工作,您会建议哪种方法或功能,我想知道如果我使用include() 是否有任何缺陷,或者使用它是否安全?

编辑:请记住,我也将使用 $_SESSION 变量。

【问题讨论】:

【参考方案1】:

两者之间唯一的区别是require和它的姐妹require_once如果找不到文件就会抛出一个致命错误,而includeinclude_once只显示一个警告并继续加载其余的这页纸。如果您不希望 PHP 尝试在没有数据库信息的情况下加载页面的其余部分(我会假设),请使用 require_once。您不需要多次包含该文件,因此无需使用常规的require 函数。

【讨论】:

谢谢,我要使用 require_once,是的,如果服务器访问变量有问题,我希望脚本死掉,因为如果没有数据库连接,它在后端没有任何意义。无论如何,我也可以像 mysql_connect($host, $username, $password) 或 die(mysql_error()); 一样使用它。然后和include()一起使用,这也会强制脚本死掉,和require_once一样吗?不是吗? @Ibrahim Azhar Armar:是的,但是为什么?我的意思是,无论如何你都应该进行这种错误检查,但是在这种情况下使用include没有意义的。 我同意并且我坚持使用 require_once()【参考方案2】:

功能性工作: 所有功能都执行类似的工作。所有函数都将在执行代码时包含并评估特定文件。

功能差异:

include 与 include_once : include() 和 include_once() 之间只有一个区别。如果文件中的代码已经被包含,那么如果我们使用 include_once(),它将不会再次被包含。意味着 include_once() 一次只包含一次文件。

include vs require : 如果 include() 无法在该位置找到指定的文件,它会抛出一个警告,但是,它不会停止脚本执行。对于同样的场景,require() 会抛出一个致命错误并停止脚本执行。

require vs require_once: require() 和 require_once() 之间只有一个区别。如果文件中的代码已经被包含,那么如果我们使用 require_once(),它将不会再次被包含。意味着 require_once() 一次只包含一次文件。

要通过示例获取详细知识,请查看这些令人惊叹的文章 (1)http://www.readmyviews.com/include-vs-include-once/ (2)http://www.readmyviews.com/include-vs-require/

【讨论】:

【参考方案3】:

对于数据库连接变量,最好使用 require_once() 函数。 如果连接因任何原因失败,您可以显示失败消息。

【讨论】:

【参考方案4】:

如果您的页面在没有数据库连接的情况下无法工作,那么 require_once 将是唯一正确的选项(因为您不想两次加载这些设置,加载一次就足够了)。即使设置文件不可用,Include 也会尝试加载您的页面。

【讨论】:

将使用 $_SESSION 变量,因为我正在处理将根据会话授予用户访问权限的后端,如果我使用 require_once() 是否仍然足够好?【参考方案5】:
<?php

include('db.php');   

echo "<br>"."Included"."<br>";

include_once('db.php');

echo "<br>"."Again included"."<br>";

?>

在上面的代码中,我在顶部包含了一个使用 include 语句的文件, 文件被包含在内。

接下来我使用了 include_once 来包含同一个文件,但是因为该文件已经被包含了 以上,此处不再赘述。

输出:

Connected             -----This is from db.php File
Included

Again included

<?php

include_once('db.php');

echo "<br>"."Again included"."<br>";

include('db.php');

echo "<br>"."Included"."<br>";

?>

我在上面的代码顶部使用了include_once,所以包含了文件。

但在下一个代码中,我再次将include_once 用于同一个文件,然后 文件将再次包含在内,输出将是:

输出:

Connected
Again included
Connected
Included

【讨论】:

【参考方案6】:

包括 include() 语句包含并评估指定的文件。

包含一次 include_once() 语句在脚本执行期间包含并评估指定的文件。这是类似于 include() 语句的行为,唯一的区别是如果文件中的代码已经被包含,它将不会再次被包含。顾名思义,它只会被包含一次。

需要 require() 和 include() 在各方面都是相同的,除了它们如何处理失败。它们都产生警告,但 require() 会导致致命错误。换句话说,如果您希望丢失的文件停止页面处理,请不要犹豫使用 require()。

需要一次 require_once() 语句在脚本执行期间包含并评估指定的文件。这是一个类似于 require() 语句的行为,唯一的区别是如果文件中的代码已经被包含,它将不会再次被包含。

【讨论】:

【参考方案7】:

require() 更适合你。因为在脚本编译之前需要包含文件。 inluce() 在动态包括中使用。

【讨论】:

我不太确定你在这里想说什么,但这与 OP 的问题无关......【参考方案8】:

如果您在一个页面上多次包含它,则应该使用 include_once()。

【讨论】:

以上是关于包括、include_once、require 还是 require_once?的主要内容,如果未能解决你的问题,请参考以下文章

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

php的include(),require(),include_once(),require_once()

require_once 和 include_once 无法正确解析文件

require(),include(),require_once()和include_once()区别

require(),include(),require_once()和include_once()之间的区别

「PHP」include()include_once()require()require_once()的用法及区别