PSR-7
PSR-7 — интерфейсы HTTP-сообщений
Суть в одном предложении
PSR-7 задаёт общие интерфейсы для HTTP-запросов и ответов в PHP, чтобы фреймворки и middleware могли обмениваться одними и теми же объектами.
Краткое определение
PSR-7 (HTTP Message Interfaces) — стандарт PHP-FIG, описывающий неизменяемые (immutable) объекты для запроса и ответа: URI, метод, заголовки, тело, версия протокола. Единый контракт позволяет связывать разные HTTP-библиотеки и middleware без привязки к конкретной реализации.
Оригинал и перевод
- Язык: английский
- Оригинал: PSR-7: HTTP Message Interfaces
- Буквальный перевод: интерфейсы HTTP-сообщений
Синонимы и варианты написания
- PSR-7
- PSR7
- HTTP Message Interfaces
Происхождение
Принят PHP-FIG. Реализации: Guzzle (guzzlehttp/psr7), Slim, Laminas, Symfony HTTP Foundation (адаптеры). Многие фреймворки и middleware (в т.ч. для PSR-15) опираются на PSR-7.
Где используется
- HTTP-клиенты (Guzzle и обёртки над ним)
- Фреймворки и middleware (Slim, Mezzio, многие PSR-15-стеки)
- API-клиенты и серверные обработчики запросов/ответов
Когда это важно
При написании переиспользуемого middleware или библиотеки, работающей с HTTP: зависимость от PSR-7 позволяет подключать любой совместимый движок (Guzzle, Laminas и т.д.) без смены кода.
Подробное объяснение
Стандарт описывает интерфейсы ServerRequestInterface, RequestInterface, ResponseInterface, StreamInterface, UriInterface и др. Сообщения неизменяемые: любое изменение создаёт новый объект. Заголовки регистронезависимые, тело — поток (stream). Такая модель упрощает цепочки middleware и тестирование.
Аналоги и связанные термины
- PSR-15 — HTTP Server Request Handlers (обработчики запросов), работают с PSR-7
- Guzzle — HTTP-клиент и популярная реализация PSR-7
- Middleware — часто принимает и возвращает PSR-7-объекты
Пример использования
«Контроллер получает PSR-7 ServerRequestInterface и возвращает ResponseInterface — фреймворк подставляет свою реализацию.»
Мини‑FAQ
- PSR-7 и $_GET/$_POST — как связаны?
Ответ:ServerRequestInterfaceоборачивает суперглобальные переменные и тело запроса в объект; фреймворк создаёт его из PHP-запроса и передаёт в приложение.
Смотри также
- PSR-4
- PSR-15
- Middleware
- HTTP