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

Строка: result = result * i должна быть отступом (это тело цикла for).

Или - у вас есть смешанное пространство и символы табуляции

1124
задан Emil 27 March 2018 в 11:39
поделиться

8 ответов

Есть require и include_once .

Итак, ваш вопрос должен быть ...

  1. Когда мне следует использовать require vs. include ?
  2. Когда мне следует использовать require_once vs . require

Ответ на 1 описан здесь .

Функция require () идентична функции include (), за исключением того, что она по-другому обрабатывает ошибки. В случае ошибки функция include () выдает предупреждение, но скрипт продолжит выполнение. Require () генерирует фатальную ошибку, и сценарий останавливается.

Ответ на 2 можно найти здесь .

Оператор require_once () идентичен оператору require (), за исключением того, что PHP будет проверять, был ли файл уже включен, и если да, не включать (требовать) его снова.

1381
ответ дан 19 December 2019 в 20:15
поделиться

Разница между функциями _once и функциями без _once: без кода _once будет снова включен, тогда как с функциями _once PHP отслеживает включенные файлы и будет включать их только один раз.

Разница между require и include: Если требуемый файл не найден, PHP выдаст фатальную ошибку, тогда как для include будет выдано только предупреждение.

35
ответ дан 19 December 2019 в 20:15
поделиться

Используйте

  • require
    , когда файл требуется вашим приложением, например шаблон важного сообщения или файл, содержащий переменные конфигурации, без которых приложение не работает.

  • require_once
    , когда файл содержит контент, который может вызвать ошибку при последующем включении, например function important () {/ * important code * /} определенно необходим в вашем приложении, но, поскольку функции не могут быть повторно объявлены, не следует включать их снова.

  • включить , когда файл не требуется, и поток приложения должен продолжаться, если он не найден, например
    отлично подходит для шаблонов, ссылающихся на переменные из текущей области или что-то

  • include_once
    необязательные зависимости, которые могут вызвать ошибки при последующей загрузке или, возможно, удаленное включение файла, которое вы не хотите повторять дважды из-за накладные расходы HTTP

Но в основном вам решать, когда использовать.

397
ответ дан 19 December 2019 в 20:15
поделиться

Требовать критически важных частей, таких как авторизация, и включать все остальные.

Множественное включение - это просто очень плохой дизайн, и его следует вообще избегать. Итак, * _once на самом деле не имеет значения.

8
ответ дан 19 December 2019 в 20:15
поделиться

Используйте «включить» для многоразовых шаблонов PHP . Используйте "require" для необходимых библиотек.

"* _ once" - это хорошо, потому что проверяет, загружен ли файл уже или нет, но для меня это имеет смысл только в "require_once".

19
ответ дан 19 December 2019 в 20:15
поделиться

Разница в ошибке, которую генерируют команды. С require файл, который вы хотите использовать, действительно требуется и поэтому генерирует E_ERROR , если он не найден.

require () идентичен include () , за исключением того, что в случае сбоя он также вызывает фатальную ошибку уровня E_ERROR .

include генерирует ошибку E_WARNING только в случае сбоя, что более или менее тихо.

Поэтому используйте его, если файл требуется для работы оставшегося кода, и вы хотите, чтобы сценарий завершился ошибкой, файл недоступен.


Для * _ once () :

include_once () может использоваться в случаях, когда один и тот же файл может быть включен и оценен более одного раза во время конкретного выполнения сценария, поэтому в этом случае это может помочь избежать таких проблем, как переопределение функций, переопределение значений переменных и т. д.

То же самое, конечно, относится к require_once () .


Ссылка: require () , include_once ()

15
ответ дан 19 December 2019 в 20:15
поделиться

При использовании require файл должен существовать, если это не так, то будет выдана ошибка; в то время как при использовании include - если файл не существует, то страница продолжит загрузку.

9
ответ дан 19 December 2019 в 20:15
поделиться

Я предлагаю просто использовать require_once 99,9% времени.

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

Если вы требуете/включаете код, который выполняется на месте, это процедурный код, и вам нужно познакомиться с новой парадигмой. Например, объектно-ориентированное программирование, программирование на основе функций или функциональное программирование.

Если вы уже занимаетесь ОО или функциональным программированием, то использование include_once будет в основном откладыванием того, где в стеке вы найдете ошибки/ошибки. Хотите ли вы знать, что функция do_cool_stuff() недоступна, когда вы обратитесь к ней позже, или в тот момент, когда вы ожидаете, что она будет доступна, требуя библиотеку? Как правило, лучше сразу узнать, что что-то нужное и ожидаемое недоступно, поэтому просто используйте require_once.

В качестве альтернативы, в современном ООП, просто автозагрузка ваших классов при использовании.

294
ответ дан 19 December 2019 в 20:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: