# PHP пакет для управления HTTP-потока и базового HTTP-сообщения
Пакет HttpSoft\Stream реализует Psr\Http\Message\StreamInterface и Psr\Http\Message\MessageInterface в соответствии со спецификациями RFC 7230 и RFC 7231.
HTTP-поток и HTTP-сообщение являются базовыми компонентами для реализации HTTP-запросов и HTTP-ответов. Самостоятельно эти компоненты используются редко, но данный пакет дает такую возможность.
Для этого пакета требуется PHP версии 7.4 или более поздней.
Установка пакета:
composer require httpsoft/http-stream # API
- HttpSoft\Stream\MessageTrait — трейт, реализующий методы, определенные в Psr\Http\Message\MessageInterface, используется внутри HttpSoft\Stream\Stream и HttpSoft\Stream\StreamPhpInput.
- HttpSoft\Stream\Stream — класс, реализующий Psr\Http\Message\StreamInterface.
- HttpSoft\Stream\StreamFactory — фабрика для создания HttpSoft\Stream\Stream и HttpSoft\Stream\StreamPhpInput, реализует Psr\Http\Message\StreamFactoryInterface.
- HttpSoft\Stream\StreamPhpInput — предпочтительная реализация Psr\Http\Message\StreamInterface для чтения HTTP-потока (
php://input) или файла. - HttpSoft\Stream\StreamTrait — трейт, реализующий методы, определенные в Psr\Http\Message\StreamInterface.
# Использование
use HttpSoft\Stream\Stream;
use HttpSoft\Stream\StreamFactory;
$stream = new Stream('php://temp', 'wb+');
// эквивалентно:
$stream = StreamFactory::create('php://temp', 'wb+');
$stream->getMetadata('uri'); // 'php://temp'
$stream->getMetadata('mode'); // 'w+b'
$stream->getContents(); // ''
$stream->isReadable(); // true
$stream->isSeekable(); // true
$stream->isWritable(); // true
$stream->write('content');
$stream->__toString(); // 'content'
// эквивалентно:
(string) $stream; // echo $stream;
$stream->close();
$stream->isReadable(); // false
$stream->isSeekable(); // false
$stream->isWritable(); // false Подробное описание использования HttpSoft\Stream\Stream смотрите здесь.
use HttpSoft\Stream\StreamFactory;
use HttpSoft\Stream\StreamPhpInput;
$stream = new StreamPhpInput();
// эквивалентно:
$stream = StreamFactory::create('php://input');
$stream->getMetadata('uri'); // 'php://input'
$stream->getMetadata('mode'); // 'rb'
$stream->getContents(); // ''
$stream->isReadable(); // true
$stream->isSeekable(); // true
$stream->isWritable(); // false
$stream = new StreamPhpInput('path/to/file');
$stream->read(1); // 'c'
$stream->getContents(); // 'ontent'
(string) $stream; // 'content' Подробное описание использования HttpSoft\Stream\StreamPhpInput смотрите здесь.
