[英]Difference between “include” and “require” in php
它们之间有什么区别吗? 使用它们是偏好问题吗? 使用其中一种会产生任何优势吗? 哪个更安全?
如果无法加载文件, require
将抛出 PHP 致命错误。 (执行停止)
如果无法加载文件, include
会产生警告。 (执行继续)
这是include 和 require 差异的一个很好的说明:
您可以在require
页面上的详细 PHP 手册中找到解释的差异:
require
与include
相同,除了失败时它也会产生致命的E_COMPILE_ERROR
级别错误。 换句话说,它将停止脚本,而 include 仅发出警告(E_WARNING
),允许脚本继续。
有关示例,请参阅@efritz 的答案
如果您不介意脚本在不加载文件的情况下继续(以防它不存在等)并且您可以(尽管您不应该)忍受显示警告错误消息,请使用include
。
使用require
意味着如果无法加载指定的文件,您的脚本将暂停,并引发致命错误。
include()
和require()
之间的区别在于无法找到被包含的文件时: include()
将释放警告 ( E_WARNING ) 并且脚本将继续,而require()
将释放致命错误 ( E_COMPILE_ERROR ) 并终止脚本。 如果包含的文件对脚本的其余部分正确运行至关重要,那么您需要使用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 程序将在找不到文件的情况下终止并显示致命错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.