# Класс HttpSoft\Emitter\SapiEmitter

Класс, реализующий HttpSoft\Emitter\EmitterInterface и использующий PHP SAPI для излучения реализаций Psr\Http\Message\ResponseInterface.

Исходный код на GitHub

use HttpSoft\Emitter\SapiEmitter;
use Psr\Http\Message\ResponseInterface;

/** @var ResponseInterface $response */
$response->getBody()->write('Content');

$emitter = new SapiEmitter();
$emitter->emit($response);
// Результат вывода: 'Content'

По умолчанию отдается все содержимое ответа целиком, для отправки содержимого по частям необходимо указать максимальную длину буфера:

$emitter = new SapiEmitter(8192);
$emitter->emit($response);
// Результат вывода: 'Content'

Отправляет только часть содержимого, используя заголовок Content-Range:

$emitter = new SapiEmitter(8192);
$emitter->emit($response->withHeader('Content-Range', 'bytes 0-3/7'));
// Результат вывода: 'Cont'

Для отправки только строки состояния и заголовков без тела укажите true в качестве второго параметра:

$emitter = new SapiEmitter(8192);
$emitter->emit($response, true);
// Результат вывода: ''

# Публичные методы

Оригинальное подробное описание методов смотрите в HttpSoft\Emitter\EmitterInterface.

public function __construct(int $bufferLength = null);

Если $bufferLength является числом, а значение меньше 1, то будет брошено исключение \InvalidArgumentException.

# emit

Отправляет HTTP-ответы, реализующие Psr\Http\Message\ResponseInterface.

public function emit(ResponseInterface $response, bool $withoutBody = false): void;

Если заголовки уже были отправлены, будет брошено исключение HttpSoft\Emitter\Exception\HeadersAlreadySentException.

Если вывод был отправлен ранее, будет брошено исключение HttpSoft\Emitter\Exception\OutputAlreadySentException.

Если $withoutBody === true или тело ответа не читаемо, то ответ будет отправлен без тела.