Отличие стандартов автозагрузки PSR-0 и PSR-4
В мире управления зависимостями в PHP центральное место занимает Composer. Зависимости в код приложения могут подключаться по-разному, на основе определенных стандартов, к которым относятся стандарты автозагрузки PSR-0 и PSR-4.
Они очень похожи, из-за чего часто сбивают с толку новичков. Что касается PSR-0, он сохраняет некоторую обратную совместимость с предыдущим стандартом, которая уже не поддерживается PSR-4. Вся путаница возникает из-за того, что PSR-4 не требует соответствия логической структуры кода физической структуре каталогов.
Что это означает? Например, Вы решили весь код приложения логически расположить в пространстве имен MyRusakov\Application. В PSR-0, код, допустим класса, Site.php, должен физически располагаться в следующей структуре каталогов src/MyRusakov/Application/Site.php, тогда как в PSR-4 физически файл будет находиться в src/Site.php. Как вы видите, в первом варианте имя класса получается длиннее, тогда как во втором оно короче. Но в первом случае полное имя класса отражает его физическое расположение, тогда как во втором случае это не так.
Т.е. PSR-4 – это, вроде относительного пути, а PSR-0 абсолютного. Также не забывайте, что PSR-4 – это не замена, а дополнение к PSR-0.
Пример:
// настройка автозагрузки
'MyRusakov\\Application' => 'src/ '
// PSR-0
'MyRusakov\\Application\\Site ' => 'src/MyRusakov/Application/Site.php'
// PSR-4
'MyRusakov\\Application\\Site' => 'src/Site.php'
Таким образом, вы уже можете начать использовать PSR-4, забыв о PSR-0, в собственных разработках.
-
- Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.