Разница между "включать" и "требовать" в php

Есть ли разница между ними? Использует ли это вопрос предпочтения? Использует ли один из них другие преимущества? Что лучше для безопасности?

Ответ 1

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

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

См. ответ @efritz для примера

Ответ 2

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

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

Вот хорошая иллюстрация include и требует разницы:

enter image description here

От: Отличие требует vs. include php (от Robert, Nov 2012)

Ответ 3

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

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

Ответ 4

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

Ответ 5

Как отмечали другие, единственная разница заключается в том, что для этого требуется критическая ошибка и включать в себя - захватывающее предупреждение. Что касается того, какой из них использовать, мой совет должен включать в себя. Зачем? потому что вы можете поймать предупреждение и дать полноценную обратную связь конечным пользователям. Рассмотрим

  // 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");   

Ответ 6

<?PHP
echo "Firstline";
include('classes/connection.php');
echo "I will run if include but not on Require";
?>

Очень простой Практический пример с кодом. Будет отображено первое эхо. Независимо от того, используете ли вы include или require, потому что его прогоны перед включением или необходимостью.

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

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

Ответ 7

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