В чем разница между require и include в PHP?

«В чем разница между require и include в PHP?» — вопрос из категории PHP Core, который задают на 28% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Основное отличие — в поведении при невозможности загрузить указанный файл.

Конструкция Поведение при ошибке Тип ошибки
require Фатальная ошибка. Выполнение скрипта немедленно прекращается. E_COMPILE_ERROR
include Выдается предупреждение. Скрипт продолжает выполнение. E_WARNING

Когда что использовать:

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

Варианты _once:

  • require_once и include_once гарантируют, что файл будет подключен только один раз, даже если директива встретится несколько раз. Это предотвращает ошибки переопределения функций/классов.

Пример:

// 1. Критичный файл с объявлением класса - используем require
require 'app/core/Database.php'; // Если файла нет, скрипт умрет здесь.

// 2. Опциональный шаблон - используем include
include 'templates/sidebar.php'; // Если sidebar отсутствует, страница все равно отобразится.

// 3. Подключение файла с функциями - используем require_once для безопасности
require_once 'utils/helpers.php'; // Не будет ошибки, если helpers.php подключен где-то еще.

На практике в современных PHP-фреймворках и при использовании автозагрузчика классов (Composer PSR-4) прямое использование этих директив стало редким.