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