25. Стандарты PSR и PER
PHP Framework Interop Group (PHP-FIG) разрабатывает рекомендации PHP Standard Recommendations (PSR) и PHP Evolved Recommendations (PER), помогающие разработчикам писать совместимый код.
Какой документ PSR описывает базовые стандарты кодирования?
JuniorОтвет: PSR-1 (ссылка) PSR-1 направлен на обеспечение высокой степени технической совместимости между общим PHP-кодом. Он о хватывает базовые элементы кодирования: файлы, пространства имён, классы и методы.
- Использовать только теги
<?phpи<?=. - Использовать только UTF-8 без BOM для PHP-кода.
- Файлы должны либо объявлять символы (классы, функции, константы и т.д.), либо вызывать побочные эффекты (генерировать вывод, изменять настройки .ini и т.д.), но не должны делать и то, и другое одновременно.
- Пространства имён и классы должны соответствовать PSR-4.
- Имена классов должны записываться в
StudlyCaps. - Константы классов должны записываться заглавными буквами с разделителями-подчёркиваниями.
- Имена методов должны записываться в
camelCase.
Какой документ PSR описывает расширенные стандарты кодирования?
JuniorОтвет: PSR-12 (ссылка) PSR-12 является расширением PSR-2 (который он заменял) и предоставляет более полный набор правил стиля кодирования. Примечание: он был заменён «живым» стандартом PER Coding Style.
- Отступы должны быть 4 пробела, без табуляции.
- Мягкий лимит длины строки — 80 символов, жёсткий лимит — 120.
- Фигурные скобки для классов и методов должны располагаться на новой строке.
- Модификатор видимости должен быть указан для всех свойств и методов.
- Указание типов обязательно для параметров и возвращаемых значений, где это возможно.
Какой документ PSR описывает автозагрузку?
JuniorОтвет: PSR-4 (ссылка) PSR-4 описывает спецификацию автозагрузки классов из файловых путей. Это современная замена PSR-0.
- Он сопоставляет пространства имён со структурой каталогов.
- Позволяет задавать «префикс» (базовый каталог) для пространства имён.
- Примечание о PSR-0: PSR-0 был предыдущим стандартом, но был признан устаревшим, так как был менее гибким (например, требовал, чтобы полное пространство имён отражалось в структуре каталогов, а подчёркивания в именах классов интерпретировались как разделители каталогов).
Какой документ PSR описывает простое кеширование?
JuniorОтвет: PSR-16 (ссылка)
Упрощённый интерфейс кеширования, ориентированный на базовые операции get, set, delete и has для простых сценариев использования.
Какой документ PSR описывает интерфейс Clock?
JuniorОтвет: PSR-20 (ссылка)
Вводит ClockInterface для получения текущего времени, позволяя внедрять время для детерминированных тестов и логики, зависящей от времени.
Какой документ PSR описывает интерфейс логирования?
MiddleОтвет: PSR-3 (ссылка)
PSR-3 предоставляет общий интерфейс для библиотек логирования. Он определяет LoggerInterface с методами для 8 уровней логирования (debug, info, notice, warning, error, critical, alert, emergency). Это позволяет приложениям быть независимыми от конкретной реализации логирования (например, Monolog).
Какой документ PSR описывает интерфейс HTTP-сообщений?
MiddleОтвет: PSR-7 (ссылка) PSR-7 описывает общие интерфейсы для представления HTTP-сообщений (запросов и ответов).
- HTTP-сообщения являются неизменяемыми (immutable) объектами.
- Охватывает запросы, ответы, загруженные файлы, URI и потоки.
- Обеспечивает совместимост ь между различными библиотеками и фреймворками, работающими с HTTP.
Какой документ PSR описывает HTTP-обработчики?
MiddleОтвет: PSR-15 (ссылка) PSR-15 определяет интерфейсы для серверных HTTP-компонентов: обработчиков запросов (Request Handlers) и middleware.
- Middleware позволяет обрабатывать обрабатывать входящие запросы и исходящие ответы слоями.
- Работает совместно с PSR-7 HTTP-сообщениями, предоставляя стандартный способ обработки веб-запросов.