3

我已经读过 include 和 require 之间的区别之一是,虽然 include 仅在遇到 include 语句时才包含包含的文件,但 require 将文件包含到托管 require 语句的文件中,即使在 require 代码未到达时也是如此。执行流程。

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

<?php
  echo __LINE__;
?>

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

4

6 回答 6

7

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

关于状态的 PHP 手册require

require与失败相同,include 它也会产生致命的E_COMPILE_ERROR级别错误。

(强调我添加的“除外”)

于 2012-07-10T20:12:32.313 回答
2

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

一个非常重要的习惯用法取决于您声明的行为不正确:条件要求的文件。

if(is_secure_page()) {
  require "security.php";
}
于 2012-07-10T20:13:11.363 回答
2

两者requireinclude在执行流程中包含它们的文件。

一个简单的测试用例是:

if (false) {
  require_once("Nonexistent.php");
}
echo "I'm doing SCIENCE and I'm still alive.\n";
于 2012-07-10T20:19:22.433 回答
1

require,甚至更好,当您想要包含应用程序实际需要require_once的代码时,应该专门使用,例如您需要的任何库。和它的兄弟,应该只在包含文件不是执行脚本所必需的情况下使用,例如当您加载侧边栏或一些切线内容时。includeinclude_once

这两个语句之间唯一真正的区别是找不到文件,require抛出一个致命错误,并且include只会抛出一个警告,然后愉快地继续前进。

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

于 2012-07-10T20:17:57.403 回答
1

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

所以在我看来,require到目前为止,赢了。

PS:被秒杀!

于 2012-07-10T20:18:40.783 回答
1

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

于 2012-07-10T20:18:57.867 回答