PSR-4 на русском читать

Автозагрузчик

Ключевые слова «ДОЛЖНО» («MUST»), «НЕДОПУСТИМО» («MUST NOT»), «ТРЕБУЕТСЯ» («REQUIRED»), «НУЖНО» («SHALL»), «НЕ ПОЗВОЛЯЕТСЯ» («SHALL NOT»), «СЛЕДУЕТ» («SHOULD»), «НЕ СЛЕДУЕТ» («SHOULD NOT»), «РЕКОМЕНДУЕТСЯ» («RECOMMENDED»), «МОЖЕТ» («MAY») и «НЕОБЯЗАТЕЛЬНО» («OPTIONAL») в этом документе должны расцениваться так, как описано в RFC 2119.

1. Обзор

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

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

Термин "класс" обозначает как классы, так и интерфейсы, трейты и другие подобные структуры.

Абсолютное имя класса имеет следующую форму:

\<ИмяПространстваИмён>(\<ИменаПодпространствИмён>)*\<ИмяКласса>
  • Абсолютное имя класса ДОЛЖНО включать в себя верхний уровень пространства имён, также известный как "имя производителя".
  • Абсолютное имя класса МОЖЕТ включать одно и более подпространство имён.
  • Абсолютное имя класса ДОЛЖНО заканчиваться именем класса.
  • Символы подчёркивания не имеют какого-либо особого значения в любой части абсолютного имени класса.
  • Для буквенных символов абсолютного пространства имён МОЖЕТ использоваться любая комбинация верхнего и нижнего регистра.
  • Все имена классов ДОЛЖНЫ использоваться в регистрозависимом стиле.

При загрузке файла, соответствующего абсолютному имени класса:

  • В абсолютном имени класса последовательность из одного или более ведущего пространства имён и подпространств имён ("префикс пространства имён"), исключая ведущий разделитель, соответствует как минимум одной "базовой директории".
  • Последовательность подпространств имён, следующая за "префиксом пространства имён", соответствует поддиректории в "базовой директории". Разделители пространства имён соответствуют разделителям директорий. Имя поддиректории ДОЛЖНО иметь тот же регистр символов, что и имена подпространств имён.
  • Завершающее имя класса соответствует имени файла, заканчивающемуся .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

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

Источник: http://www.php-fig.org/psr/psr-4/ru/

Key Words for FKN + antitotal forum (CS VSU):

vedro-compota's picture

См. о базовой директории и префиксе пространства имен тут: http://fkn.ktu10.com/?q=node/9437

объяснение текста:

Последовательность подпространств имён, следующая за "префиксом пространства имён", соответствует поддиректории в "базовой директории". Разделители пространства имён соответствуют разделителям директорий. Имя поддиректории ДОЛЖНО иметь тот же регистр символов, что и имена подпространств имён.

_____________
матфак вгу и остальная классика =)

vedro-compota's picture

см. пример функции здесь: http://fkn.ktu10.com/?q=node/8236

_____________
матфак вгу и остальная классика =)