Ответ вслух Junior Composer и PSR обновлено

Зачем нужны PSR

Вопрос

Что такое PSR и как они помогают в работе?

Попробуйте сами

Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.

Показать ответ и разбор

Коротко

PSR это рекомендации группы PHP-FIG, в которую входят авторы фреймворков и крупных библиотек. Их цель совместимость: чтобы пакет, написанный для Symfony, работал в Laravel и наоборот.

Что должно прозвучать в ответе

  • PHP-FIG выпускает рекомендации совместимости между фреймворками

  • PSR-4 автозагрузка: любой пакет подключается одинаково

  • Стиль кода PSR-12 и PER, автоформатирование (PHP-CS-Fixer)

  • Интерфейсы PSR-3, PSR-7, PSR-11, PSR-18: библиотека не привязана к фреймворку

  • Можно подменить реализацию: Monolog, Guzzle, Symfony HttpClient

Что могут спросить следом

  • Почему Laravel не полностью следует PSR-7?
  • Зачем PSR-20 ClockInterface?

Разбор

PSR это рекомендации группы PHP-FIG, в которую входят авторы фреймворков и крупных библиотек. Их цель совместимость: чтобы пакет, написанный для Symfony, работал в Laravel и наоборот.

Самый важный на практике PSR-4: правило автозагрузки, по которому Composer находит класс по пространству имён. Благодаря ему любой пакет подключается одинаково. Стиль кода задают PSR-12 и пришедший ему на смену PER Coding Style, их автоматически применяет PHP-CS-Fixer.

Вторая большая группа это интерфейсы: логгер PSR-3, HTTP-сообщения PSR-7, контейнер PSR-11, HTTP-клиент PSR-18, кеш PSR-6 и PSR-16. Если мой класс зависит от Psr\Log\LoggerInterface, а не от Monolog напрямую, я могу подставить любую реализацию, а в тестах заглушку. Так же с Psr\Clock\ClockInterface: время подменяется в тестах.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.