intriro / stream
提供对数据流简单面向对象抽象
0.4.0
2021-05-25 19:44 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpstan/phpstan: ^0.12
- phpunit/phpunit: ^9.5
- symplify/easy-coding-standard: ^9.3
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');
您还可以使用StreamFactory
或IoStreamFactory
提供的方便方法创建流。
$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');