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

Как студенту попасть на стажировку в Гугл в Москве: доступные способы

Поиск уязвимости веб-сайта: как обеспечить безопасность сайта
Web

Поиск уязвимости веб-сайта: как обеспечить безопасность сайта

Web

Как определить язык браузера в PHP

Web

Какие шаблоны существуют в проекте PHP для хранения, доступа и организации вспомогательных объектов?

×