Ключевые слова «ДОЛЖЕН», «НЕ ДОЛЖЕН», «ТРЕБУЕТСЯ», «ДОЛЖЕН», «НЕ ДОЛЖЕН», «СЛЕДУЕТ», «НЕ СЛЕДУЕТ», «РЕКОМЕНДУЕТСЯ», «МОЖЕТ» и «НЕОБЯЗАТЕЛЬНО» в настоящем документе следует толковать так, как описано в RFC 2119.
1. Обзор
Этот PSR описывает спецификацию для автозагрузки классов из путей к файлам. Он полностью совместим и может использоваться в дополнение к любой другой спецификации автозагрузки, включая PSR-0. Этот 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/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 |
Примеры реализаций автозагрузчиков, соответствующих спецификации, см. в файле примеров. Примеры реализаций НЕ ДОЛЖНЫ рассматриваться как часть спецификации и МОГУТ изменяться в любое время.