← Назад в словарь

PSR-4

PSR-4 — стандарт автозагрузки

Суть в одном предложении

PSR-4 определяет, как пространства имён (namespace) и имена классов сопоставляются с путями к файлам в проекте.

Краткое определение

PSR-4 — стандарт PHP-FIG для автозагрузки классов: префикс неймспейса отображается на базовый каталог, остальная часть неймспейса и имя класса — на путь к файлу и имя файла. Один префикс — одна базовая директория.

Оригинал и перевод

  • Язык: английский
  • Оригинал: PSR-4
  • Буквальный перевод: стандарт автозагрузки (по смыслу документа)

Синонимы и варианты написания

  • PSR-4
  • PSR4

Происхождение

Принят PHP-FIG как замена PSR-0. Composer генерирует автозагрузчик по правилам PSR-4 из секции autoload в composer.json; современные PHP-фреймворки и библиотеки опираются на PSR-4.

Где используется

  • Composer (autoload, autoload-dump)
  • Современные PHP-фреймворки и библиотеки
  • Bitrix (локальная автозагрузка из /local/php_interface/ и т.п. по аналогичным правилам)

Когда это важно

При добавлении классов и подключении библиотек: соответствие неймспейса и пути файла PSR-4 позволяет автозагрузчику найти класс без ручных require. Нарушение правил приводит к «class not found».

Подробное объяснение

Задаётся соответствие «префикс неймспейса → базовый каталог». Например, App\Servicessrc/Services. Класс App\Services\OrderService ищется в файле src/Services/OrderService.php. Имя файла должно совпадать с именем класса; один класс — один файл. Имена классов и неймспейсов по PSR-1 (например, CamelCase).

Аналоги и связанные термины

  • PSR-1 — базовый стандарт кода; имена классов и структура файлов согласуются с PSR-4
  • Autoload — механизм, который PSR-4 стандартизирует
  • Composer — инструмент, генерирующий автозагрузчик по PSR-4
  • Namespace — пространства имён, отображаемые на пути по PSR-4

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

«В composer.json указали autoload PSR-4: App\\src/ — класс App\Services\OrderService лежит в src/Services/OrderService.php

Мини‑FAQ

  • PSR-0 и PSR-4 — в чём разница?
    Ответ: PSR-0 устарел. В PSR-4 префикс неймспейса может быть не привязан к подпапкам (например, Vendor\Package → одна базовая папка), что короче и гибче.

Смотри также

  • Autoload
  • Namespace
  • PSR-1
  • Composer