mracine / php-streams

流抽象库

v0.3.0 2023-05-22 08:50 UTC

This package is auto-updated.

Last update: 2024-09-22 11:41:22 UTC


README

Latest Stable Version PHP 7 ready License Travis Build Status Scrutinizer Build Status Scrutinizer Code Quality Code Coverage Code Intelligence Status Maintainability

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 !"