它们之间有什么区别吗?使用它们是偏好问题吗?使用其中一种会产生任何优势吗?哪个更安全?
7 回答
您可以在以下页面require
上的详细 PHP 手册中找到差异说明:
require
与失败相同,include
但它也会产生致命E_COMPILE_ERROR
级别的错误。换句话说,它将停止脚本,而 include 只发出一个警告 (E_WARNING
) 允许脚本继续。
有关示例,请参见@efritz 的答案
如果include
您不介意脚本在不加载文件的情况下继续运行(以防文件不存在等)并且您可以(尽管您不应该)忍受显示的警告错误消息,请使用此选项。
Usingrequire
意味着如果您的脚本无法加载指定的文件,它将停止,并抛出一个致命错误。
找不到包含的文件时出现include()
和之间的区别:将释放警告(E_WARNING)并且脚本将继续,而将释放致命错误(E_COMPILE_ERROR)并终止脚本。如果包含的文件对于正确运行脚本的其余部分至关重要,那么您需要使用.require()
include()
require()
require()
有关更多详细信息:PHP 中 Include 和 Require 之间的区别
正如其他人指出的那样,唯一的区别是 require 会引发致命错误,并包含 - 一个可捕获的警告。至于使用哪一个,我的建议是坚持包含。为什么?因为您可以捕获警告并向最终用户提供有意义的反馈。考虑
// Example 1.
// users see a standard php error message or a blank screen
// depending on your display_errors setting
require 'not_there';
// Example 2.
// users see a meaningful error message
try {
include 'not_there';
} catch(Exception $e) {
echo "something strange happened!";
}
注意:例如 2 要工作,您需要安装错误到异常处理程序,如此处所述http://www.php.net/manual/en/class.errorexception.php
function exception_error_handler($errno, $errstr, $errfile, $errline ) {
throw new ErrorException($errstr, 0, $errno, $errfile, $errline);
}
set_error_handler("exception_error_handler");
<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>
一个非常简单的带有代码的实用示例。 将显示第一个回声。无论您使用 include 还是 require,因为它在 include 或 required 之前运行。
为了检查结果,在代码的第二行故意提供错误的文件路径或在文件名中出错。因此,是否显示第二个回声将完全取决于您是否使用require或include。
如果你使用require,第二个 echo 将不会执行,但如果你使用include不管出现什么错误,你也会看到第二个 echo 的结果。
如果 Include 程序不会终止并在浏览器上显示警告,另一方面 Require 程序将终止并在找不到文件的情况下显示致命错误。