Очень частый вопрос новичков на различных форумах: В чём же разница между языковыми конструкциями 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.