intriro/stream

提供对数据流简单面向对象抽象

0.4.0 2021-05-25 19:44 UTC

This package is auto-updated.

Last update: 2024-09-20 12:18:02 UTC


README

提供对数据流简单面向对象抽象。

安装

composer require intriro/stream

文档

Stream对象本身没有读取或写入的方法。它们只是持有一些PHP资源的引用,并提供了方便的方法来获取流的状态信息。

创建流

您可以从现有资源创建流。

$resource = fopen('/home/test/file.txt', 'rw+');

$stream = Stream::createFromResource($resource);

您还可以直接从文件名或URL风格协议创建流。URL格式应与fopen支持的格式一致。

$stream = Stream::createFromFilename('file:///home/test/file.txt', 'r');
$stream = Stream::createFromUrl('php://temp', 'r');

您还可以使用StreamFactoryIoStreamFactory提供的方便方法创建流。

$factory = new StreamFactory();
$stream = $streamFactory->filename(/home/test/file.txt', 'rw+');

$ioStreamFactory = new IoStreamFactory();
$stream = $ioStreamFactory->temp();
$stream = $ioStreamFactory->memory();
$stream = $ioStreamFactory->stdin();
$stream = $ioStreamFactory->stdout();
$stream = $ioStreamFactory->stderr();

读取和写入流

通过读取器和写入器进行流的操作。

从流中读取

$reader = new Reader(
    Stream::createFromFilename('/home/test/file.txt', 'r')
);

$reader->read(100); // will read 100 bytes from the stream


// Reading lines from a stream
$reader = new LineReader(
    Stream::createFromFilename('/home/test/file.txt', 'r')
);

while($line = $reader->readLine()) {
    // do something
}

向流中写入

$ioStreamFactory = new IoStreamFactory();

$writer = new Writer(
    $ioStreamFactory->temp()
);

$writer->write('some text');