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

Дата публикации: 2024-01-01
Просмотры: 206

PSR (PHP Standards Recommendations) - это набор рекомендаций по программированию на языке PHP.
PSR-4 - этот стандарт описывает спецификацию автоматической загрузки классов из путей к файлам. Он полностью совместим c PSR-0.

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

1. Обзор

Этот 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/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/

Поделиться статьей:

Комментарии:

Авторизуйтесь, для того, чтобы оставить комментарий. Войти на сайт
Подписка на новости
Узнавайте о новых статьях первыми.
Профиль