PSR-4: Autoloader

Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «НЕОБЯЗАТЕЛЬНО» в настоящем документе следует толковать так, как описано в RFC 2119.

1. Обзор

Этот PSR описывает спецификацию для автозагрузки классов из путей к файлам. Он полностью совместим и может использоваться в дополнение к любой другой спецификации автозагрузки, включая PSR-0. Этот PSR также описывает, где размещать файлы, которые будут автоматически загружены в соответствии со спецификацией.

2. Спецификация

  1. Термин «класс» относится к классам, интерфейсам, чертам и другим подобным структурам.
  2. Полностью определенное имя класса имеет следующую форму:
    • \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
    • Полностью определенное имя класса ДОЛЖНО иметь имя пространства имен верхнего уровня, также известное как «пространство имен поставщика».
    • Полностью определенное имя класса МОЖЕТ иметь одно или несколько имен подпространств имен.
    • Полностью определенное имя класса ДОЛЖНО иметь завершающее имя класса.
    • Подчеркивания не имеют особого значения в любой части полностью определенного имени класса.
    • Буквенные символы в полностью определенном имени класса МОГУТ быть любой комбинацией нижнего и верхнего регистра.
    • Все имена классов ДОЛЖНЫ ссылаться с учетом регистра.
  3. При загрузке файла, соответствующего полностью определенному имени класса...
    • Последовательная серия из одного или нескольких ведущих имен пространств имен и подпространств имен, не включая ведущий разделитель пространств имен, в полностью определенном имени класса («префикс пространства имен») соответствует как минимум одному «базовому каталогу».
    • Последовательные имена подпространств имен после «префикса пространства имен» соответствуют подкаталогу в «базовом каталоге», в котором разделители пространств имен представляют разделители каталогов. Имя подкаталога ДОЛЖНО соответствовать регистру имен подпространств имен.
    • Завершающее имя класса соответствует имени файла, заканчивающемуся на .php. Имя файла ДОЛЖНО соответствовать регистру завершающего имени класса.
  4. Реализации автозагрузчика НЕ ​​ДОЛЖНЫ вызывать исключения, НЕ ДОЛЖНЫ вызывать ошибки любого уровня и НЕ ДОЛЖНЫ возвращать значение.

3. Примеры

В таблице ниже показан соответствующий путь к файлу для заданного полного имени класса, префикса пространства имен и базового каталога.

Полное имя класса Префикс пространства имен Базовый каталог Результирующий файл Путь
\Acme\Log\Writer\File_Writer Acme\Log\Writer ./acme-log-writer/lib/ ./acme-log-writer/lib/File_Writer.php
\Aura\Web\Response\Status Aura\Web /path/to/aura-web/src/ /path/to/aura-web/s rc/Response/Status.php
\Symfony\Core\Request Symfony\Core ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
\Zend\Acl Zend /usr/includes/Zend/ /usr/includes/Zend/Acl.php

 

Примеры реализаций автозагрузчиков, соответствующих спецификации, см. в файле примеров. Примеры реализаций НЕ ДОЛЖНЫ рассматриваться как часть спецификации и МОГУТ изменяться в любое время.

Подобные материалы
Справочные материалы данной темы

CRG Home 2026

Не является публичной офертой.