包括、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_connect
和 mysql_select_db
,因为这些函数经常在后端的几乎每个页面中使用,而我使用的是 include()
,这是完美的现在为我工作,您会建议哪种方法或功能,我想知道如果我使用include()
是否有任何缺陷,或者使用它是否安全?
编辑:请记住,我也将使用 $_SESSION
变量。
【问题讨论】:
【参考方案1】:两者之间唯一的区别是require
和它的姐妹require_once
如果找不到文件就会抛出一个致命错误,而include
和include_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()区别