kuyoto/psr7-streams

提供PSR-7流装饰器。

v1.0.0 2020-06-27 11:20 UTC

This package is auto-updated.

Last update: 2024-08-27 20:44:48 UTC


README

Build Status Latest Stable Version License

此仓库提供了多个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许可证