Зачем нужны PSR
Вопрос
Что такое PSR и как они помогают в работе?
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
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 ошибок.