它们之间有什么区别吗?是否优先使用它们?将一个使用在另一个上是否有任何优势?哪种安全性更好?
它们之间有什么区别吗?是否优先使用它们?将一个使用在另一个上是否有任何优势?哪种安全性更好?
Answers:
您可以在以下页面require
的详细PHP手册中找到差异:
require
等同include
于失败,也会产生致命的E_COMPILE_ERROR
错误。换句话说,它将停止脚本,而include仅发出警告(E_WARNING
),该警告允许脚本继续运行。
有关示例,请参见@efritz的答案
<?php if (isset($flibbertygibbet)) require 'file.php';
似乎会使这个答案看起来完全不正确。否则,即使条件不正确,我也应该收到致命错误。 strace
即使尝试触摸也不显示PHP file.php
。
if (false) require 'file.php';
将导致加载“ file.php”(但未执行)。TLDR忽略了所有这些评论。
正如其他人指出的那样,唯一的区别是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正常工作,您需要安装一个error-to-exceptions处理程序,如此处所述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,则第二个回显将不会执行,但是如果您使用include不管出现什么错误,您也会看到第二个回显的结果。