← Назад в словарь

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