Введение

В предыдущем уроке по include вы научились загружать код из другого файла с помощью конструкции include.
Иногда возникает ситуация, когда один и тот же файл подключается несколько раз. Если в подключаемом файле определена функция, при повторном подключении вы получите фатальную ошибку, так как функция уже была объявлена ранее. Например:
Предположим, у вас есть следующая структура проекта:
В файле functions.php определена функция dd():
А в файле index.php вы подключаете functions.php дважды:
При запуске index.php PHP выдаст ошибку:
Аналогично, если подключаемый файл выводит какие-либо HTML-элементы, они появятся на странице несколько раз. Для демонстрации создадим два новых файла: header.php и footer.php в каталоге inc.
header.php
footer.php
Если в index.php подключить header.php дважды:
На странице появится два заголовка.

Как избежать повторного подключения файла

Чтобы избежать повторного подключения файла, используйте конструкцию include_once:
include_once работает так же, как и include, но если файл уже был подключён, он не загружается повторно и возвращает true.
Проще говоря, include_once загружает файл только один раз, независимо от количества вызовов.
В предыдущем примере, если использовать include_once, скрипт отработает корректно:

Зачем использовать PHP include_once

Представьте, что у вас есть файл index.php, который подключает два других файла: Logger.php и Database.php. При этом файл Database.php также подключает Logger.php. В этом случае Logger.php будет подключён дважды: один раз в Database.php, другой в index.php.
В такой ситуации необходимо использовать include_once для подключения Logger.php, чтобы избежать ошибок и повторного выполнения кода.

Итог

Используйте конструкцию PHP include_once для однократного подключения файла. Это помогает избежать ошибок повторного объявления функций и дублирования вывода на странице.