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

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

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

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

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

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

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

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

введите описание изображения здесь

От: Разница требует vs. include php (от Robert, Nov 2012)

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

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

Ключевое различие между require() и include() заключается в том, что если вам 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"; ?> в <?PHP echo "Firstline"; include('classes/connection.php'); echo "I will run if include but not on Require"; ?> 

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

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

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

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