Ответ
PSR (PHP Standards Recommendation) — это набор стандартов, разработанных группой PHP-FIG (Framework Interop Group) для обеспечения совместимости и единообразия кода в экосистеме PHP.
Основные стандарты:
- PSR-1 (Basic Coding Standard) и PSR-12 (Extended Coding Style Guide): определяют базовый стиль кодирования (именование, структура файлов, отступы).
- PSR-4 (Autoloading Standard): стандарт автозагрузки классов через пространства имён и файловую структуру. Это основа современной автозагрузки через Composer.
- PSR-7 (HTTP Message Interface): определяет интерфейсы для HTTP-запросов и ответов, что позволяет создавать взаимозаменяемые компоненты для работы с HTTP.
- PSR-11 (Container Interface): стандартизирует интерфейс контейнера внедрения зависимостей (DI).
- PSR-14 (Event Dispatcher): определяет интерфейсы для системы событий (event dispatcher).
Практический пример PSR-4 в composer.json:
{
"autoload": {
"psr-4": {
"MyApp\": "src/"
}
}
}
После этого класс MyAppServiceUserService будет автоматически загружен из файла src/Service/UserService.php. Следование PSR упрощает интеграцию сторонних библиотек и поддержку кода.
Ответ 18+ 🔞
А, блядь, PSR! Ну это ж святое, ебать мои старые костыли. Короче, представь себе бардак: каждый фреймворк писал код как бог на душу положит. Один — с подчёркиваниями, другой — с верблюжьим регистром, третий файлы клал куда попало. Собрать их вместе — это пиздец, волнение ебать, терпения ноль ебать.
Так вот, умные дядьки из PHP-FIG сели и сказали: «Хуй с горы, давайте договоримся, как писать, чтобы не было потом „а чё это у тебя тут?“». Это и есть PSR — рекомендации, как делать по-человечески.
Что там у них по полочкам:
- PSR-1 и PSR-12 — это типа устава. Где фигурную скобку ставить, как переменные называть, чтобы код читался, а не выглядел как послание инопланетян. Без этого — ты распиздяй, смерд пердящий.
- PSR-4 — вот это, блядь, магия! Раньше надо было кучу
require_onceписать, а теперь ты просто говоришь: «Смотри, чувак, всё что в папкеsrc/и начинается сMyApp— это мои классы». И система сама всё найдёт. Ёперный театр, удобно же! - PSR-7 — про HTTP, запросы-ответы. Сделали общие интерфейсы, чтобы твой код мог работать с запросом от Symfony, а завтра — от Slim. Универсальная хуйня, короче.
- PSR-11 — про контейнеры зависимостей. Стандартная «коробка», куда ты складываешь свои сервисы, чтобы потом не писать
newвезде, где попало. - PSR-14 — про события. Чтоб можно было крикнуть «эй, тут пользователя создали!», а кто надо — услышит и сделает своё дело.
Вот смотри, как эта магия PSR-4 в composer.json выглядит:
{
"autoload": {
"psr-4": {
"MyApp\": "src/"
}
}
}
Объясняю на пальцах: написал ты класс MyAppServiceUserService. Система смотрит на эту хуйню, видит MyApp, лезет в папку src/, ищет там Service/UserService.php — и всё, класс готов, можно использовать. Никаких заклинаний, просто красота.
Если не следовать этим штукам, то твой код будет как хитрая жопа — непредсказуемый и с ним никто не захочет работать. А так — всё прозрачно, и библиотеки друг с другом дружат. Сам от себя охуеешь, насколько жизнь проще становится.
Видео-ответы
▶
▶
▶
▶
▶