kuyoto / psr7-streams
提供PSR-7流装饰器。
v1.0.0
2020-06-27 11:20 UTC
Requires
- php: ^7.2
- psr/http-message: ^1.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16.3
- phpunit/phpunit: ^7.5 || ^8.0
This package is auto-updated.
Last update: 2024-08-27 20:44:48 UTC
README
此仓库提供了多个PSR-7流装饰器。
安装
安装此库的推荐方式是通过composer
composer require kuyoto/psr7-streams
流装饰器
此库包含以下Psr\Http\Message\StreamInterface
实现
ConcatenatedStream
Kuyoto\Psr7\Stream\ConcatenatedStream
从多个流中按顺序读取。
use Kuyoto\Psr7\Stream\StringStream; use Kuyoto\Psr7\Stream\ConcatenatedStream; $a = new StringStream('foo'); $b = new StringStream('bar'); $composed = new ConcatenatedStream([$a, $b]); echo $composed; // foobar.
NoSeekStream
Kuyoto\Psr7\Stream\NoSeekStream
它包装了一个流并且不允许查找。
use Kuyoto\Psr7\Stream\StringStream; use Kuyoto\Psr7\Stream\NoSeekStream; $stream = new StringStream('foo'); $noSeek = new NoSeekStream($stream); echo $noSeek->read(3); // foo var_export($noSeek->isSeekable()); // false $noSeek->seek(0); var_export($noSeek->read(3)); // NULL
NullStream
Kuyoto\Psr7\Stream\NullStream
NullStream不会存储写入到其中的任何数据。
use Kuyoto\Psr7\Stream\NullStream; $stream = new NullStream(); echo $stream->read(3); // '' var_export($stream->getSize()); // NULL
StringStream
Kuyoto\Psr7\Stream\StringStream
StringStream允许从提供的字符串创建流。
use Kuyoto\Psr7\Stream\StringStream; $stream = new StringStream('foo'); echo $stream->read(2); // fo var_export($stream->getSize()); // 3
实现流装饰器
由于Kuyoto\Psr7\Stream\StreamDecorator
的存在,创建流装饰器非常简单。此装饰器通过代理到底层流来提供实现Psr\Http\Message\StreamInterface
的方法。只需使用StreamDecoratorTrait
并实现您自定义的方法。
测试
composer test
许可协议
此软件包是开源软件,采用MIT许可证。