PSR-4: Автозагрузчик

PSR-4: Автозагрузчик


freelanceland
Ищете фрилансера для выполнения задач?

1. Обзор

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

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

  1. Термин «класс» относится к классам, интерфейсам, характеристикам и другим подобным структурам.

  2. Полное имя класса имеет следующую форму:

    \<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
    1. Полное имя класса ДОЛЖНО иметь имя пространства имен верхнего уровня, также известное как «пространство имен поставщика».

    2. Полное имя класса МОЖЕТ иметь одно или несколько имен подпространств имен.

    3. Полное имя класса ДОЛЖНО иметь завершающее имя класса.

    4. Подчеркивание не имеет особого значения в любой части полного имени класса.

    5. Буквенные символы в полном имени класса МОГУТ быть любой комбинацией нижнего и верхнего регистра.

    6. Все имена классов ДОЛЖНЫ быть указаны с учетом регистра.

  3. При загрузке файла, соответствующего полностью определенному имени класса ...

    1. Непрерывная последовательность из одного или нескольких начальных имен пространств имен и подпространств имен, не включая начальный разделитель пространства имен, в полностью определенном имени класса («префикс пространства имен») соответствует по меньшей мере одному «базовому каталогу».

    2. Имена смежных подпространств имен после «префикса пространства имен» соответствуют подкаталогу в «базовом каталоге», в котором разделители пространства имен представляют разделители каталогов. Имя подкаталога ДОЛЖНО соответствовать регистру имен подпространств имен.

    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 / src / /path/to/aura-web/src/Response/Status.php
\ Symfony \ Core \ Запрос Symfony \ Core ./vendor/Symfony/Core/ ./vendor/Symfony/Core/Request.php
\ Zend \ Acl Zend / usr / включает / Zend / /usr/includes/Zend/Acl.php

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

Также читают

PSR-1: базовый стандарт кодирования
PSR-6: Интерфейс кэширования
PSR-2: Руководство по стилю кодирования

Возврат к списку