繁体   English   中英

php中“include”和“require”的区别

[英]Difference between “include” and “require” in php

它们之间有什么区别吗? 使用它们是偏好问题吗? 使用其中一种会产生任何优势吗? 哪个更安全?

如果无法加载文件, require将抛出 PHP 致命错误。 (执行停止)

如果无法加载文件, include会产生警告。 (执行继续)

这是include 和 require 差异的一个很好的说明

在此处输入图片说明

来自:差异需要与包含 php(罗伯特;2012 年 11 月)

您可以在require页面详细 PHP 手册中找到解释的差异:

requireinclude相同,除了失败时它也会产生致命的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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM