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

В PHP:

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

    Также require и include_once .

    Поэтому ваш вопрос должен быть …

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

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

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

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

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

    использование

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

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

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

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

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

    Мое предложение состоит в том, чтобы просто использовать require_once 99,9% случаев.

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

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

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

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

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

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

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

    require() выкинет E_COMPILE_ERROR и остановит скрипт, если он не может включить файл.

    Функции include_once() и require_once() не будут включать файл во второй раз, если он уже был включен.

    См. Следующие страницы документации:

    • включают
    • требовать
    • include_once
    • require_once

    Всякий раз, когда вы используете require_once() можете использовать в файле, чтобы включить другой файл, если вам нужен вызывается только один раз в текущем файле. Здесь, в примере, у меня есть test1.php.

     <?php echo "today is:".date("Ymd"); ?> 

    и в другом файле, который я назвал test2.php

     <?php require_once('test1.php'); require_once('test1.php'); ?> 

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

    Всякий раз, когда вы используете 'include_once () `, можно использовать в файле для включения другого файла, если вам нужен вызывается файл более одного раза в текущем файле. Здесь, в примере, у меня есть файл с именем test3.php.

     <?php echo "today is:".date("Ymd"); ?> 

    И в другом файле, который я назвал test4.php

     <?php include_once('test3.php'); include_once('test3.php'); ?> 

    поскольку вы смотрите m, в том числе файл test3, будет включать файл один раз, но прекратите дальнейшее выполнение.

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

    «* _once» приятно, потому что он проверяет, загружен ли файл или нет, но это имеет смысл только для меня в «require_once».

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

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

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

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


    Для *_once() :

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

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


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

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

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

    Несколько включений – это очень плохой дизайн, и его следует избегать вообще. Таким образом, * _once не имеет большого значения.

    Include / Require вы можете включить один и тот же файл более одного раза:

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

    require_once / include_once

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

    Вы должны сохранять определения классов и функций в файлах.

    Используйте require_once для загрузки зависимостей (классы, функции, константы).

    Использование требует загрузки шаблонных файлов.

    включают()

    Он содержит указанный файл. Он выдает предупреждение, если он не сможет найти файл и выполнить остальные скрипты

    требуют ()

    Он содержит указанный файл. Это приведет к фатальной ошибке, если не сможет найти файл и остановить выполнение

    include_once ()

    Он содержит указанный файл. файл уже включен, он больше не будет включен. Он выдаст предупреждение, если он не найдет файл и не выполнит остальные скрипты.

    require_once ()

    Он содержит указанный файл. файл уже включен, он больше не будет включен. Это приведет к фатальной ошибке, если не сможет найти файл и прекратит выполнение.

    require приведет к фатальной ошибке (E_COMPILE_ERROR) и остановке сценария.

    include будет выдавать предупреждение (E_WARNING), и скрипт будет продолжаться

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

    Если a.php – это php-скрипт, вызывающий b.php с требованием require_once (), и не обнаруживает b.php, остановка a.php вызывает фатальную ошибку.

    Из руководства :

    require() идентичен include() за исключением отказа, он также приведет к фатальной E_COMPILE_ERROR уровня E_COMPILE_ERROR . Другими словами, он остановит скрипт, тогда как include() только выдает предупреждение ( E_WARNING ), которое позволяет сценарию продолжить.

    То же самое верно для вариантов _once() .

    include() будет генерировать предупреждение, когда он не найдет файл, но require_once() создаст фатальную ошибку.

    Другое дело, если файл включен раньше. Тогда require_once() не будет включать его снова.

    Я использовал функцию, как показано ниже:

     function doSomething() { require_once(xyz.php); .... } 

    Были постоянные значения, объявленные в xyz.php.

    Мне нужно вызвать эту функцию doSomething () из другого файла скрипта php.

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

    Я решил свою проблему, переключившись с require_once() на include() , обновленный doSomething() выглядит следующим образом:

     function doSomething() { include(xyz.php); .... } в function doSomething() { include(xyz.php); .... } 

    Теперь каждый итерационный вызов doSomething() получает постоянные значения, определенные в xyz.php .

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

    2. Используйте функцию include, когда вы хотите загрузить файл в стиле шаблона

    Если вы все еще запутались, просто используйте require_once на все время.

    1. Когда нужно использовать require или include ?

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

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

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

    1. Когда нужно использовать require_once или require ?

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

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

    В эпоху автозагрузчиков PSR-0 / PSR-4 совершенно необязательно использовать какие-либо из операторов, если все, что вам нужно, – это сделать некоторые функции / классы доступными для вашего кода (конечно, вам все равно нужно самому автозагрузчика require_once в вашем bootstrap и include шаблоны, если вы все еще используете PHP в качестве механизма шаблонов).

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

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

    Из английского слова требуется, php сообщает, что выполнение страницы или файла зависит от требуемого файла.

    По моему опыту, это норма, требующая важных файлов, таких как файлы конфигурации, классы баз данных и другие важные утилиты

    2018! Ответ

    Этот вопрос был задан 7 лет назад, и ни один из ответов не дает практической помощи в этом вопросе. В современном PHP-программировании вы в основном используете required_once только один раз, чтобы включить свой автозагрузчик (часто автозагрузчик композитора), и он загрузит все ваши классы и функции (файлы функций должны быть явно добавлены в файл composer.json чтобы быть доступными во всех других файлы). Если по какой-либо причине ваш класс не загружается с автозагрузчика, вы используете require_once для его загрузки.

    В эти дни вам require только разделить большой фрагмент php-файла. Это в основном определение большого массива. В таких случаях вы используете только require require_once .

     // arr.php return ['x'=>'y]; //main.php $arr= require 'arry.php' 

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

    нет практического варианта использования include и include_once .

    Все они включают файлы:

    Требовать означает, что это необходимо. Require_once означает, что он понадобится, но требует только один раз. Include означает, что он будет содержать файл, но он не нуждается в нем для продолжения.

    Примеры:

    Требовать 'filename' Require_once 'filename' Включить 'filename'

    Существует также функция include_once, которая включает файл один раз.

    Include_once 'filename'

    Не используйте заглавные буквы, которые у меня есть, когда я набираю текст с телефона.

    Спасибо за ваше время.

    просто используя require и include. вызывают мысли, как работать include_once или require_once, который ищет данные журнала, которые сохраняют включенные или необходимые файлы php. так что это медленнее, чем требуется n.

     <pre> if(!defined(php)){ include 'php'; define(php,1); } </pre> 

    только используя подобный .. ..