PSR-4: Автозагрузчик
PSR (PHP Standards Recommendations) - это набор рекомендаций по программированию на языке PHP.
PSR-4 - этот стандарт описывает спецификацию автоматической загрузки классов из путей к файлам. Он полностью совместим c PSR-0.
1. Обзор
Этот PSR также описывает, где разместить файлы, которые будут автоматически загружаться в соответствии со спецификацией.
2. Спецификация
-
Термин «класс» относится к классам, интерфейсам, признакам и другим подобным структурам.
-
Полное имя класса имеет следующую форму:
\<NamespaceName>(\<SubNamespaceNames>)*\<ClassName>
- Полное имя класса ДОЛЖНО иметь имя пространства имен верхнего уровня, также известное как «пространство имен поставщика».
- Полное имя класса МОЖЕТ иметь одно или несколько имен подпространства имен.
- Полное имя класса ДОЛЖНО иметь завершающее имя класса.
- Символы подчеркивания не имеют особого значения ни в одной части полного имени класса.
- Алфавитные символы в полном имени класса МОГУТ представлять собой любую комбинацию нижнего и верхнего регистра.
- Все имена классов ДОЛЖНЫ указываться с учетом регистра.
-
При загрузке файла, который соответствует полному имени класса...
- Непрерывная серия из одного или нескольких ведущих имен пространств имен и подпространств имен, не включая ведущий разделитель пространства имен, в полном имени класса («префикс пространства имен») соответствует по крайней мере одному «базовому каталогу».
- Непрерывные имена подпространств имен после «префикса пространства имен» соответствуют подкаталогу в «базовом каталоге», в котором разделители пространства имен представляют собой разделители каталогов. Имя подкаталога ДОЛЖНО соответствовать регистру имен подпространства имен.
- Завершающее имя класса соответствует имени файла, заканчивающемуся на
.php
. Имя файла ДОЛЖНО соответствовать регистру имени завершающего класса.
-
Реализации автозагрузчика НЕ ДОЛЖНЫ генерировать исключения, НЕ ДОЛЖНЫ вызывать ошибки любого уровня и НЕ ДОЛЖНЫ возвращать значение.
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/src/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 |
Примеры реализации автозагрузчиков, соответствующих спецификации, см. в файле примеров . Примеры реализации НЕ ДОЛЖНЫ рассматриваться как часть спецификации и МОГУТ измениться в любое время.
Ссылка на источник: https://www.php-fig.org/psr/psr-4/