Отличие include от require в PHP, приставка _once
Очень частый вопрос новичков на различных форумах: В чём же разница между языковыми конструкциями include
и require
?. Приведу исчерпывающий ответ на данный вопрос.
Языковая конструкция include
Языковая конструкция include
включает и выполняет указанный файл. Если подключаемый файл не найден, то мы увидим ошибку уровня Warning
(предупреждение) и скрипт спокойно продолжит своё выполнение.
Пример использования:
include "test.php";
Языковая конструкция require
Принцип действия языковой конструкции require
аналогичен с языковой констукцией include
, она включает и выполняет указанный файл, за исключением того, что при ошибке он выдаст фатальную ошибку уровня E_COMPILE_ERROR
, при этом работа скрипта остановится!
Пример использования:
require "test.php";
Приставка _once
У вышеуказанных языковых конструкций есть так называемые близнецы include_once
и require_once
. При использовании именно этих конструкций php будет подключать файл только один раз. Если в подключаемом файле находятся декларации функций и/или классов, то имеет смысл подключать такой файл с помощью _once
, потому как попытка переопределения любой существующей функции привидёт к Fatal Error. Поэтому, если PHP встретит повторное подключение одного и того же файла с помощью _once
, он такой файл просто игнорирует и подключать его уже не будет.
Примеры использования:
include_once "test.php";
require_once "test.php";
Разница между include_once
и require_once
такая же, как и в случае подключения через include
и require
, в случае ошибки скрипт продолжает выполнение (include
и include_once
) или останавливает свою работу (require
и require_once
).
Вывод
Если вы подключаете файлы, в которых идет описание важных функций/классов или любых других вещей, без которых об успешной работе не может быть и речи, то имеет смысл использовать require
. Если же у вас нет уверенности в том, подключается ли ещё где-либо данный файл, лучше использовать require_once
.
Предыдущая запись
PHP: Удаление директорииСледующая запись
PHP: Шпаргалка по ООП (основы)