В PHP:
- Когда я должен использовать
require
противinclude
? - Когда я должен использовать
require_once
противinclude_once
?
php
include
require
require-once
Скотт Б
источник
источник
Ответы:
Есть
require
иinclude_once
так же.Так что ваш вопрос должен быть ...
require
противinclude
?require_once
противrequire
Ответ на 1 описан здесь .
Ответ на 2 можно найти здесь .
источник
require_once()
будет быстрее из двухиспользование
требовать,
когда файл требуется для вашего приложения, например, важный шаблон сообщения или файл, содержащий переменные конфигурации, без которых приложение может сломаться.
require_once,
когда файл содержит контент, который может привести к ошибке при последующем включении, например
function important() { /* important code */}
, безусловно, необходим в вашем приложении, но поскольку функции не могут быть повторно объявлены, их не следует включать снова.включать, когда файл не требуется, и поток приложения должен продолжаться, когда не найден, например,
отлично подходит для шаблонов, ссылающихся на переменные из текущей области или что-то в этом роде
include_once
необязательные зависимости, которые могут привести к ошибкам при последующей загрузке или, возможно, удаленному включению файлов, которые вы не хотите выполнять дважды из-за накладных расходов HTTP
Но в принципе, это зависит от вас, когда использовать какой.
источник
include
?include_once
?require
?require_once
?Я предлагаю просто использовать
require_once
99,9% времени.Использование
require
илиinclude
вместо этого подразумевает, что ваш код нельзя использовать в другом месте, т. Е. Что сценарии, которые вы используете, фактически выполняют код, а не делают доступными класс или некоторые библиотеки функций.Если вам требуется / включая код, который выполняется на месте, это процедурный код, и вам необходимо ознакомиться с новой парадигмой . Как объектно-ориентированное программирование, функционально-ориентированное программирование или функциональное программирование.
Если вы уже занимаетесь ОО или функциональным программированием, использование
include_once
будет в основном задерживать, когда в стеке вы найдете ошибки / ошибки. Хотите ли вы знать, что функцияdo_cool_stuff()
недоступна, когда вы обращаетесь к ней позже, или в тот момент, когда вы ожидаете, что она будет доступна по требованию библиотеки? Как правило, лучше сразу узнать, если что-то, что вам нужно и ожидается, недоступно, так что просто используйтеrequire_once
.Кроме того, в современном ООП просто загружайте свои классы при использовании.
источник
include
семейство, как правило, является совершенно плохой идеей (поскольку довольно редко включаются файлы, которые могут вообще отсутствовать), и что изrequire_once
иrequire
, вы должны использовать,require_once
когда включаете файлы, которые определяют функции или классы, которые должны быть используется в другом месте, или создает экземпляры синглетонов, такие как объекты подключения к базе данных, и используетсяrequire
для включения файлов, которые сразу же делают вещи, когда они включаются. В любом большом веб-приложении последний тип включения необычен.require_once
, скорее всего, кандидат, который будет использоваться почти все время. Учитывая незначительные накладные различия между вариантами выбора,require
обеспечивающие остановку сценария, я не могу представить себе множество сценариев, в которых приложение может выжить без включения файла. И_once
защищает от дурацких вопросов. Любой, кто не согласен, вероятно, знает, что он делает, и может выбрать тот, который подходит для приложения или сценария.Разница между функциями _once и без функций _once: без кода _once будет включен снова, тогда как с функциями _once PHP отслеживает включенные файлы и включит его только один раз.
Разница между require и include: если нужный файл не найден, PHP выдаст фатальную ошибку, тогда как для include будет выдано только предупреждение.
источник
include()
выдаст предупреждение, если он не может включить файл, но остальная часть сценария будет запущена.require()
сгенерируетE_COMPILE_ERROR
и остановит скрипт, если он не может включить файл.Функции
include_once()
иrequire_once()
не будут включать файл во второй раз, если он уже был включен.Смотрите следующие страницы документации:
источник
Всякий раз, когда вы используете,
require_once()
можно использовать в файле, чтобы включить другой файл, когда вам нужен вызываемый файл только один раз в текущем файле. Вот в примере у меня есть test1.php.и в другом файле, который я назвал test2.php
так как вы смотрите m, требующий файл test1 дважды, но этот файл будет включать test1 один раз, а для вызова во второй раз это будет проигнорировано. И без остановки будет отображать вывод один раз.
Всякий раз, когда вы используете 'include_once () `, можно использовать в файле для включения другого файла, когда вам нужно вызвать вызываемый файл более одного раза в текущем файле. Здесь в примере у меня есть файл с именем test3.php.
И в другом файле, который я назвал test4.php
поскольку вы смотрите m, включая файл test3, он будет включать файл один раз, но остановит дальнейшее выполнение.
источник
Используйте «include» для повторно используемых шаблонов PHP . Используйте «require» для обязательных библиотек.
«* _once» - это хорошо, потому что он проверяет, загружен ли файл или нет, но для меня это имеет смысл только в «require_once».
источник
Вы должны хранить определения классов и функций в файлах.
Используется
require_once()
для загрузки зависимостей (классов, функций, констант).Используйте
require()
для загрузки шаблоноподобных файлов .Используется
include_once()
для загрузки необязательных зависимостей (классов, функций, констант).Используйте
include()
для загрузки дополнительных шаблоноподобных файлов .источник
Ответ через 7 лет для 2018 года
Этот вопрос был задан семь лет назад, и ни один из ответов не дает практической помощи по этому вопросу. В современном программировании PHP вы в основном используете
required_once
только один раз для включения вашего класса автозагрузчика (часто это автозагрузчик composer), и он загрузит все ваши классы и функции (файлы функций должны быть явно добавлены вcomposer.json
файл, чтобы быть доступными во всех других файлах). Если по какой-либо причине ваш класс не загружается из автозагрузчика, вы используете егоrequire_once
для загрузки.Есть несколько случаев, которые нам нужно использовать
require
. Например, если у вас действительно большое определение массива и вы не хотите добавлять его в исходный код определения класса, вы можете:Если файл, который вы намереваетесь включить, содержит что-то исполняемое или объявляет некоторые переменные, которые вам почти всегда нужно использовать
require
, потому что, если вы используетеrequire_once
отдельно от первого места, ваш код не будет выполняться и / или ваши переменные не будут инициироваться тихо, вызывая ошибки, которые абсолютно трудно точно определить.Там нет практического использования для
include
и наinclude_once
самом деле.источник
include()
обернутый в выходной буфер для реализации вашего движка шаблонов.require()
для разделения больших файлов.require_once
для PHPMailer внутри функции, и мой автозагрузчик определяет$mail
переменную, необходимую позже в коде, так что следующаяrequire_once
игнорируется, а$mail
не инициализируется! решение было просто использоватьrequire
после вызова функции.require
в этих случаях?Разница заключается в ошибке, сгенерированной командами. С
require
, файл, который вы хотите использовать, действительно требуется и, следовательно, генерирует,E_ERROR
если он не найден.include
только генерируетE_WARNING
ошибку, если она терпит неудачу, которая является более или менее тихой.Поэтому используйте его, если файл необходим, чтобы оставшийся код работал, и вы хотите, чтобы скрипт не работал, файл недоступен.
Для
*_once()
:То же самое относится и к
require_once()
конечно.Ссылка:
require()
,include_once()
источник
require
дает E_COMPILE_ERROR, а не E_ERROR.С помощью require файл должен существовать, если его нет, появится сообщение об ошибке; тогда как с помощью include - если файл не существует, тогда страница продолжит загрузку.
источник
Требуются критические части, такие как авторизация и все остальные.
Множественные включения - очень плохой дизайн, и их вообще следует избегать. Так что * _once на самом деле не имеет значения.
источник
Включить / Требовать вы можете включать один и тот же файл более одного раза:
require_once / include_once
источник
include()
выдаст предупреждение, когда не найдет файл, ноrequire_once()
сгенерирует фатальную ошибку.Другое дело, если файл включен ранее. Тогда
require_once()
не буду включать это снова.источник
Я использовал функцию, как показано ниже:
В xyz.php были объявлены постоянные значения.
Я должен вызвать эту функцию doSomething () из другого файла сценария PHP.
Но я наблюдал поведение при вызове этой функции в цикле, для первой итерации doSomething () получал постоянные значения внутри
xyz.php
, но позже каждая итерацияdoSomething()
не смогла получить постоянные значения, объявленные вxyz.php
.Я решил свою проблему, переключившись с
require_once()
наinclude()
, обновленныйdoSomething()
код, как показано ниже:Теперь каждый итерационный вызов
doSomething()
получает постоянные значения, определенные вxyz.php
.источник
Из руководства :
То же самое относится и к
_once()
вариантам.источник
В эпоху
PSR-0 / PSR-4
автозагрузчиков может оказаться совершенно ненужным использовать какие-либо операторы, если все, что вам нужно, - это сделать некоторые функции / классы доступными для вашего кода (конечно, вам все равно нужноrequire_once
автоматически загружать себя в свой файл начальной загрузки иinclude
шаблоны, если вы все еще использовать PHP в качестве движка шаблонов).источник
Когда следует использовать
require
илиinclude
?Функции
require
иinclude
выполняют ту же задачу, то есть включают и оценивают указанный файл, но разница в том, чтоrequire
это приведет к фатальной ошибке, когда указанное расположение файла недопустимо, или к любой ошибке, тогда какinclude
будет сгенерировано предупреждение и продолжено выполнение кода.Таким образом, вы можете использовать эту
require
функцию в том случае, когда файл, который вы пытаетесь включить, является сердцем системы и может оказать огромное влияние на остальную часть кода, и вы можете использовать этуinclude
функцию, когда файл, который вы пытаетесь включить, является простой файл, содержащий менее важный код.И моя личная рекомендация (для менее важного кода) - использовать
require
функцию везде в вашем коде, пока он находится на стадии разработки, чтобы вы могли отлаживать код, а затем заменять всеrequire
функции наinclude
функции, прежде чем переходить к производству, так что если вы пропустите любые ошибки это не повлияет на конечного пользователя, а остальная часть кода выполняется правильно ...Когда следует использовать
require_once
илиrequire
?Основное различие между
require
иrequire_once
заключается вrequire_once
проверке того, включен ли файл в файл или нет, если он уже включен, то он не будет включать файл, тогда какrequire
функция будет включать файл независимо от того, включен файл или нет.Так что в случаях, когда вы хотите снова и снова включать какой-то фрагмент кода, используйте
require
функцию, тогда как, если вы хотите включить какой-либо код только один раз в свой код, используйтеrequire_once
.источник
Используйте функцию require, когда вам нужно загрузить любой класс, функцию или зависимость.
Используйте функцию include, если вы хотите загрузить файл в стиле шаблона
Если вы все еще в замешательстве, просто используйте require_once на все времена.
источник
Это все способы включения файлов.
Требовать означает, что это нужно. Require_once означает, что это потребуется, но требуется только один раз. Включить означает, что он будет включать файл, но для продолжения он не нужен.
Примеры:
Существует также функция include_once, которая включает файл один раз.
Не используйте заглавные буквы там, где я пишу с телефона.
источник
Я заметил одну вещь: при использовании include я могу получить доступ к функциям включенных файлов только из файла, который их включил. С помощью require_once я могу запустить эту функцию во втором файле required_once.
также: я рекомендую добавить
Потому что когда require_once убивает страницу, она может иногда отображать каталог файлов вашего сайта
Вот пользовательская функция, которую я сделал, чтобы требовать файлы:
пример использования:
источник
По сути, если вам требуется неверный путь, PHP выдает фатальную ошибку и вызывается функция завершения работы, но если вы укажете неправильный путь, PHP продолжит выполнение, но просто отобразит предупреждение о том, что файл не существует.
От английского слова require PHP говорит, что выполнение страницы или файла зависит от требуемого файла.
Исходя из моего опыта, обычно требуются важные файлы, такие как файлы конфигурации, классы базы данных и другие важные утилиты.
источник
Часто вопрос заключается в том, хотите ли вы загружать клиентскую библиотеку условно или идти вперед и загружать ее независимо от того, собираетесь ли вы ее использовать.
Вот конкретный пример; уточняя, что сказал PCJ.
Допустим, у вас есть файл конфигурации, в котором хранятся имя пользователя и пароль вашей базы данных (conf.php):
И класс со статической функцией, которая использует базу данных:
И эта статическая функция используется внутри другой функции, которая итеративно вызывается внутри цикла:
Вы можете потребовать / включить класс только один раз. Если вы потребуете / включите его в каждую итерацию вашего цикла, вы получите ошибку. Тем не менее, вы должны включать ваш conf-файл каждый раз, когда вызывается статическая функция.
Конечно, перемещение его за пределы функции может быть решением этой проблемы:
Если вы не озабочены загрузкой класса, который может использоваться только в определенных условиях, и не хотите загружать его, когда это не так.
источник
require
имеет большие издержки, чемinclude
, так как он должен сначала проанализировать файл. Заменаrequires
сincludes
часто техника хорошей оптимизацией.источник
require
не анализирует файл больше, чемinclude
делает. В_once
версии этих функций каждый имеет немного накладных расходов, но , как и другие говорили, что это близко к незначительным в большинстве приложений.Просто используйте требовать и включать.
Потому что подумайте, как работать с include_once или require_once. Это ищет данные журнала, которые сохраняют включенные или требуемые файлы PHP. Так что это медленнее, чем включать и требовать.
Просто используя вот так ...
источник