Введение в константу __DIR__ в PHP

В версии PHP 5.3 появилась новая константа __DIR__. При обращении к __DIR__ внутри файла она возвращает путь к каталогу, в котором этот файл находится. Обратите внимание: в конце пути не добавляется слэш (например, / или \), за исключением случая, если это корневой каталог.
Если использовать __DIR__ внутри подключаемого файла, константа вернёт путь к каталогу именно этого подключаемого файла.
С технической точки зрения, __DIR__ эквивалентен выражению dirname(__FILE__), однако запись с __DIR__ выглядит гораздо компактнее.

Простой пример использования __DIR__

Допустим, у вас следующая структура каталогов:
Файл header.php содержит код для шапки страницы:
Файл footer.php - для подвала, а также выводит значение константы __DIR__:
Файл index.php подключает оба файла и тоже выводит путь:
В браузере вы увидите примерно следующее:
Здесь видно: в index.php константа возвращает путь к этому файлу, а в footer.php - к самому файлу подвала.

Почему стоит использовать __DIR__

Рассмотрим более сложную структуру проекта:
В файле config/app.php определена константа:
В header.php подключается конфигурация и используется константа:
Файл public/index.php подключает шапку и подвал:
Если открыть страницу через браузер, всё работает корректно.
Однако, если попробовать подключить те же файлы из admin/dashboard/index.php:
Появится ошибка: PHP не сможет найти файл ../config/app.php, так как путь рассчитывается относительно текущего каталога (admin), а не относительно файла header.php.
Решение с помощью __DIR__
Чтобы избежать подобных проблем, используйте __DIR__ при подключении файлов:
Теперь путь всегда будет строиться от каталога текущего файла (header.php), и ошибки не возникнет.

Вывод

  • Константа __DIR__ возвращает путь к каталогу файла, в котором она используется.
  • При подключении файлов всегда используйте __DIR__ для построения путей - это избавит от ошибок при переносе или изменении структуры проекта.
  • Такой подход делает код более надёжным и удобным для поддержки.