Search by

phpsoftbox / http-emitter

HTTP response emitter for the PhpSoftBox framework

Maintainers

Package info

github.com/phpsoftbox/http-emitter

pkg:composer/phpsoftbox/http-emitter

Transparency log

Statistics

Installs: 113

Dependents: 1

Suggesters: 0

Stars: 0

Open Issues: 0

dev-master 2026-09-02 14:13 UTC

This package is auto-updated.

Last update: 2026-09-02 14:13:54 UTC


README

Компонент выводит готовый PSR-7 response в PHP SAPI. Он устанавливает status line и заголовки, после чего потоково передаёт body клиенту.

Использование

use PhpSoftBox\Http\Emitter\SapiEmitter;

$emitter = new SapiEmitter();
$emitter->emit($response);

Вызов emit() должен быть последним этапом обработки запроса. До него приложение не должно отправлять данные клиенту.

Статус и заголовки

Статус берётся из переданного response и сохраняется при отправке каждого заголовка. Это важно, например, для Inertia-ответа 409 Conflict с заголовком Location: PHP не заменит его автоматически на 302 Found.

Каждое значение PSR-7 заголовка отправляется отдельно. Поэтому несколько значений Set-Cookie не объединяются через запятую.

Если PHP уже отправил заголовки, emitter выбросит HeadersAlreadySentException с доступным местом первого вывода. Продолжать эмиссию в такой ситуации небезопасно: status и заголовки response уже нельзя доставить клиенту.

Body

Body читается из StreamInterface частями, поэтому файл или большой экспорт не загружается в память целиком. Seekable stream перед чтением перематывается в начало; non-seekable stream читается с текущей позиции.

Emitter не выводит body для статусов, которые его не допускают:

  • информационные 1xx;
  • 204 No Content;
  • 205 Reset Content;
  • 304 Not Modified.

Обработка HEAD остаётся ответственностью HTTP application: emitter получает только response и не знает метод исходного запроса.