Есть ли разница между ними? Использует ли это вопрос предпочтения? Использует ли один из них другие преимущества? Что лучше для безопасности?
Вы найдете различия, описанные в подробном руководстве 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 не прекращается и не отображается предупреждение в браузере. С другой стороны, Требовать, чтобы программа завершилась и отобразилась фатальная ошибка в случае, если файл не найден.