Ответ
Основное отличие — в поведении при невозможности загрузить указанный файл.
| Конструкция | Поведение при ошибке | Тип ошибки |
|---|---|---|
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) прямое использование этих директив стало редким.