В PHP:
Когда я должен использовать require или include?
Когда я должен использовать require_once или include_once?
Ответ 1
Функция require() идентична функции include(), за исключением того, что она по-другому обрабатывает ошибки. При возникновении ошибки функция include() генерирует предупреждение, но скрипт продолжает выполнение. require() генерирует фатальную ошибку, и сценарий останавливается.
Оператор require_once() идентичен оператору require(), за исключением того, что PHP будет проверять, был ли файл уже включен, и если да — не будет включать его снова.
Ответ 2
Используется следующим образом:
require
когда файл требуется вашему приложению, например, шаблон важного сообщения или файл, содержащий переменные конфигурации, без которых приложение не работает.require_once
когда файл содержит контент, который может вызвать ошибку при последующем включении, например, function important() { /*импорт кода */} — это определенно необходимо в вашем приложении, но, поскольку функции не могут быть повторно объявлены, не следует включать их снова.include
когда файл не требуется и поток приложения должен продолжаться, если он не найден, например, это отлично подходит для шаблонов, ссылающихся на переменные из текущей области или чего-то еще.include_once
необязательные зависимости, которые могут вызвать ошибки при последующей загрузке или, возможно, удаленное включение файла, которое вы не хотите повторять дважды из-за накладных расходов HTTP.Но в основном вам решать, когда использовать каждый из вариантов.
Ответ 3
Я предлагаю просто использовать require_once в 99,9% случаев.
Использование require или include вместо этого подразумевает, что ваш код не может быть повторно использован в других местах, т. е. что скрипты, которые вы подключаете, действительно выполняют код, а не делают доступными класс или некоторые библиотеки функций.
Если вы требуете/включаете код, который выполняется на месте, то это процедурный код, и вам нужно познакомиться с новой парадигмой. Например, объектно-ориентированное программирование, программирование на основе функций или функциональное программирование.
Если вы уже занимаетесь ООП или функциональным программированием, то использование include_once в основном будет откладывать поиск ошибок в стеке. Хотите ли вы знать, что функция do_cool_stuff() недоступна, когда вы собираетесь обратиться к ней позже или в тот момент, когда вы ожидаете, что она будет доступна, требуя библиотеку? Как правило, лучше сразу узнать, что что-то нужное и ожидаемое недоступно, поэтому просто используйте require_once.
В качестве альтернативы в современном ООП просто автоподключайте свои классы при использовании.
Ответ 4
При использовании require_once() можно использовать его в файле для включения другого файла, когда вызываемый файл нужен только один раз в текущем файле. Здесь в примере у меня есть файл test1.php.
<?php
echo "Сегодня:".date("Y-m-d");
?>
И в другом файле, который я назвал test2.php
<?php
require_once('test1.php');
require_once('test1.php');
?>
В данном примере требуется файл test1 дважды, но файл будет включать test1 один раз и повторный вызов будет просто проигнорирован. И без остановки скрипта выведет результат один раз.
При использовании include_once() можно использовать его в файле для включения другого файла, когда вызываемый файл нужен более одного раза в текущем файле. Здесь в примере у меня есть файл с именем test3.php.
<?php
echo "Сегодня:".date("Y-m-d");
?>
И в другом файле, который я назвал test4.php
<?php
include_once('test3.php');
include_once('test3.php');
?>
В этом примере включение файла test3 включит файл один раз и остановит дальнейшее выполнение скрипта.
Ответ 5
Разница заключается в ошибке, которую выдают команды. В require файл, который вы хотите использовать, действительно требуется и, следовательно, генерирует ошибку E_ERROR, если он не найден.
require() идентична include(), за исключением того, что при неудаче она также выдаст фатальную ошибку уровня E_ERROR.
include генерирует только ошибку E_WARNING в случае неудачи, что может быть проигнорировано.
Поэтому используйте его, если файл необходим для работы остального кода и вы хотите, чтобы скрипт не выдал ошибку, если файл недоступен.
Для *_once():
include_once() может использоваться в случаях, когда один и тот же файл может быть включен более одного раза во время выполнения скрипта, поэтому в этом случае он может помочь избежать таких проблем, как переопределение функций, переназначение значений переменных и т. д.
То же самое, конечно, относится и к require_once().
Переведено с помощью www.DeepL.com/Translator (бесплатная версия)
Web