Web

В чем разница между require, include, require_once и include_once?

В 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

PhpBB: как установить, какие требования существуют для установки

Web

Удаление из массива PHP по значению (не по ключу)

Как создать грамотное оформление страницы 404 на собственном сайте
Web

Как создать грамотное оформление страницы 404 на собственном сайте

Какой хостинг выбрать для сайта
Web

Какой хостинг выбрать для сайта