Разница между" include "и" require " в php

есть ли разница между ними? Является ли их использование вопросом предпочтения? Дает ли использование одного над другим какие-либо преимущества? Что лучше для безопасности?

7 ответов


вы найдете различия, объясненные в подробном руководстве PHP на страница require:

require идентичен include кроме случаев неудачи, это также приведет к фатальному E_COMPILE_ERROR Ошибка уровня. Другими словами, он остановит скрипт, тогда как include только выдает предупреждение (E_WARNING), который позволяет сценарию продолжить.

посмотреть @efritz это пример


require выдаст неустранимую ошибку PHP, если файл не может быть загружен. (Исполнение останавливается)

include выдает предупреждение, если файл не может быть загружен. (Исполнение продолжается)

вот хороший иллюстрация включает и требует разницы:

enter image description here

от: разница require vs. include php (by Robert; Nov 2012)


использовать include Если вы не возражаете, чтобы ваш скрипт продолжался без загрузки файла (в случае, если он не существует и т. д.), И вы можете (хотя вы не должны) жить с отображаемым предупреждающим сообщением об ошибке.

используя require означает, что ваш скрипт остановится, если он не сможет загрузить указанный файл, и выдаст фатальную ошибку.


ключевая разница между require() и include() Если вы require() файл, который не может быть загружен (например, если его нет), то он генерирует фатальную ошибку, которая полностью остановит выполнение страницы, и больше не будет генерироваться. С другой стороны, если ты ... --1--> файл, который не может быть загружен, тогда это просто создаст предупреждение и продолжит построение страницы.


как указывали другие, единственное отличие заключается в том, что require выдает фатальную ошибку, а include - уловимое предупреждение. Что касается того, какой из них использовать, мой совет-придерживаться включения. Почему? потому что вы можете поймать предупреждение и создать значимую обратную связь для конечных пользователей. Считать

  // 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!";
  }

NB: например 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.

чтобы проверить результат, во второй строке кода намеренно дают неправильный путь к файлу или сделать ошибку в имени файла. Таким образом, второе эхо, которое будет отображаться или нет, будет полностью зависеть от того, используете ли вы требуются или включить.

Если вы используете требуются второе эхо не будет выполнять, но если вы используете включить не имеет значения, какая ошибка приходит, вы увидите результат второго Эха тоже.


в случае включения программа не будет прекращаться и отображать предупреждение на браузере, с другой стороны, требовать программа будет прекращаться и отображать фатальную ошибку в случае файла не найден.