Разница между require, include, require_once и include_once? - PullRequest
1120 голосов
/ 10 марта 2010

В PHP:

  • Когда я должен использовать require против include?
  • Когда я должен использовать require_once против include_once?

Ответы [ 24 ]

9 голосов
/ 10 марта 2010

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

8 голосов
/ 10 марта 2010

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

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

7 голосов
/ 03 ноября 2011

Включить / Требуется Вы можете включить один и тот же файл более одного раза:

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

require_once / include_once

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

5 голосов
/ 03 ноября 2011

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

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

4 голосов
/ 30 сентября 2016

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

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);
    ....
}

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

4 голосов
/ 25 октября 2015

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

4 голосов
/ 03 ноября 2011

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

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

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

3 голосов
/ 30 июля 2015

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

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

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

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

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

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

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

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

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

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

1 голос
/ 22 ноября 2017

Это все способы включения файлов.

Требовать означает, что это нужно. Require_once означает, что это потребуется, но требуется только один раз. «Включить» означает, что в него будет включен файл, но он не нужен для продолжения.

Примеры:

Require 'filename'
Require_once 'filename'
Include 'filename'

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

Include_once 'filename'

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

...