mracine / php-streams
流抽象库
v0.3.0
2023-05-22 08:50 UTC
Requires
- php: ^7.0|^8.0
Requires (Dev)
- phpunit/phpunit: ^8.0
README
PHP 流抽象库
mracine\Streams 是一个库,它提供了流抽象,可以将不同类型的资源(文件、套接字、管道、进程输入/输出、字符串)作为流提供者使用。这使得使用 mracine\Sreams\Stream 接口进行测试变得简单。
安装
您可以使用 Composer 将此库添加到您的项目中,作为本地、针对项目的依赖项。
composer require mracine/streams
用法
mracine\Streams\Stream 接口提供
- read 方法:从流中获取字节
- write 方法:将字节推送到流中
- close 方法:释放流
实际上有两个类实现了 Stream 接口
- mracine\Streams\ResourceStream:抽象 PHP 资源(文件、套接字、UNIX 管道、进程等)
- mracine\Streams\BufferStream:抽象 PHP 字符串在缓冲区中
<?php use mracine\Streams; $socketStream = new Streams\ResourceStream(stream_socket_client('tcp://'.$serverIP.':'.$serverPort)); $bufferStream = new Streams\BufferStream('Hello World !'); // talk function does not have to know what kind of "resource" it communicate with // Could be a file, a socket, a process or even a string function talk(Streams\Stream $stream) { $stream->write('Hi !'); $bytes = $stream->read(5); return $bytes; } echo talk($socketStream): // Will echo 5 firsts bytes the server returned echo talk($bufferStream); // Will echo "Hello" echo talk($bufferStream); // Will echo " Worl" echo talk($bufferStream); // Will echo "d !"