PHP:require与include:实际考虑因素?

时间:2012-07-10 20:08:40

标签: php include require

我读过include和require之间的区别之一就是 如果include语句是include,则include仅包括包含的文件 遇到,要求将文件包含到托管要求的文件中 即使执行流程未达到需求代码,也要声明。

这怎么会有任何影响。毕竟,如果我有一个文件说:

<?php
  echo __LINE__;
?>

输出将始终为3,而不是在内部打印线 包含此类包含文件的文件内的位置。

6 个答案:

答案 0 :(得分:7)

据我所知,这根本不是真的。如果代码中未达到require行,则肯定不会包含该文件。

The PHP Manual on require州:

  

requireinclude 相同,但失败后也会如此   产生致命的 E_COMPILE_ERROR 级错误。

(强调“除了”我添加)

答案 1 :(得分:2)

据我所知,这不是需要工作的方式。唯一的实际区别是,如果无法包含该文件,require将导致您的脚本终止,并且include将仅发出警告并继续执行。

一个非常重要的习惯取决于你陈述的行为不是真的:有条件的必需文件。

if(is_secure_page()) {
  require "security.php";
}

答案 2 :(得分:2)

requireinclude都将其文件包含在执行流程中的文件中。

一个简单的测试用例是:

if (false) {
  require_once("Nonexistent.php");
}
echo "I'm doing SCIENCE and I'm still alive.\n";

答案 3 :(得分:1)

当你想要包含应用程序实际上 required 的代码时,

require,甚至更好,require_once应该是专门使用的,例如你需要的任何图书馆。 include及其兄弟include_once只应在包含文件不需要执行脚本时使用,例如当您加载侧边栏或某些切线内容时。

两个语句之间唯一真正的差异是找不到文件,require会抛出致命错误,而include只会发出警告,继续快乐地走开。

我相信requireinclude都以完全相同的方式加载和解析。如果require会在给定的上下文中加载文件,那么include也会加载。

答案 4 :(得分:1)

我个人总是使用require_once,我发现在大多数情况下它都是你需要的(要么你得到一次页面,要么你停止脚本)。如果你想“尝试”包含东西,include会抛出你需要隐藏的警告。但这只是糟糕的编程习惯,一个简单的if (file_exists($file)) require_once $file;就可以完成这个技巧并完全胜过include

所以在我看来,require到目前为止胜出。

PS:被一秒钟击败!

答案 5 :(得分:1)

假设您正在运行任务关键型应用程序,每秒将损失1美元。有些库仅在某些情况下使用,不会影响您的业务流程。您应该对这些可选库使用 include_once 。因为如果文件不存在, require 将阻止您的应用程序运行并发生致命错误。