【发布时间】:2012-07-10 09:22:05
【问题描述】:
我读过 include 和 require 之间的区别之一是 而 include 仅包含包含的文件,如果 include 语句是 遇到,require 将文件包含到托管 require 的文件中 即使执行流程未达到要求代码,也可以声明。
这有什么影响。毕竟,如果我有一个文件说:
<?php
echo __LINE__;
?>
输出将始终为 3,而不是在 在包含此类包含文件的文件中的位置。
【问题讨论】:
我读过 include 和 require 之间的区别之一是 而 include 仅包含包含的文件,如果 include 语句是 遇到,require 将文件包含到托管 require 的文件中 即使执行流程未达到要求代码,也可以声明。
这有什么影响。毕竟,如果我有一个文件说:
<?php
echo __LINE__;
?>
输出将始终为 3,而不是在 在包含此类包含文件的文件中的位置。
【问题讨论】:
require 和 include 都在执行流程中包含它们的文件。
一个简单的测试用例是:
if (false) {
require_once("Nonexistent.php");
}
echo "I'm doing SCIENCE and I'm still alive.\n";
【讨论】:
假设您正在运行一个关键任务应用程序,并且每秒将损失 1 美元。有些库仅在特定情况下使用,不会影响您的业务流程。您可能应该对这些可选库使用 include_once。因为如果文件不存在,require 将阻止您的应用程序运行并出现致命错误。
【讨论】:
我个人总是使用require_once,我发现在大多数情况下它是您所需要的(您要么获得页面一次,要么停止脚本)。如果你想“尝试”包括一些东西,include 会抛出你需要隐藏的警告。但这只是糟糕的编程习惯,一个简单的if (file_exists($file)) require_once $file; 就可以解决问题,并且完全胜过include。
所以在我看来,require 胜出。
PS:被秒杀!
【讨论】:
require,或者更好的是,require_once 应该专门用于当您想要包含应用程序实际需要的代码时,例如您需要的任何库。 include 和它的兄弟 include_once 应该只在执行脚本不需要包含的文件时使用,例如在加载侧边栏或一些相切的内容时。
这两个语句之间唯一真正的区别是找不到文件,require 会抛出一个致命错误,include 只会抛出一个警告并继续愉快地咕咕叫离开。
我相信require 和include 都以完全相同的方式加载和解析。如果require 会在给定的上下文中加载文件,include 也会如此。
【讨论】:
据我所知,这不是 require 的工作方式。唯一实际的区别是,如果无法包含文件,require 将导致脚本终止,并且 include 只会抛出警告并继续执行。
一个非常重要的习惯用法取决于您声明的行为不正确:条件要求的文件。
if(is_secure_page()) {
require "security.php";
}
【讨论】:
据我所知,这根本不是真的。如果代码中没有到达require这一行,那么文件肯定不会被包含进来。
require与include相同 except 在失败时它也会 产生一个致命的 E_COMPILE_ERROR 级错误。
(强调“除外”是我加的)
【讨论】: