catapush/streamer

面向对象的PHP流API

v1.0 2019-08-09 12:48 UTC

This package is auto-updated.

Last update: 2024-09-28 17:33:20 UTC


README

Streamer是一个面向对象的PHP流API。

为什么我应该使用流?

流是从一个容器到另一个容器的字节流。您在PHP中已经大量使用了流,例如每次将文件加载到内存中(使用file_get_contents())时。当您需要从容器访问数据,但不知道该容器的尺寸时,您应该显式使用流:

  • 您需要从容器中访问数据,但不知道该容器的尺寸(例如,从STDIN读取,或使用流式的Web服务)
  • 您需要在整个传输完成之前开始处理容器中的数据(例如,在文件全部加载到内存之前开始压缩文件)
  • 您需要节省时间和内存

什么是Streamer?

PHP有一个非常完善的流API;不幸的是,它大多数流操作使用的是函数(除了包装器——您知道是怎么回事)。Streamer是一个专注于提供面向对象API的通用库,仅此而已。

安装

Streamer发布在packagist.org上,因此您可以将它添加到您的composer.json文件中进行简单安装

{
    "require": {
        "deminy/streamer": "@dev"
    }
}

示例

<?php
use Streamer\Stream;

// basic usage
$stream = new Stream(fopen('smiley.png', 'r'));
$image = '';
while (!$stream->isEOF()) {
  $image .= $stream->read();
}

// pipe dreams!
$stream1 = new Stream(fopen('smiley.png', 'r'));
$stream2 = new Stream(fopen('tmp.png', 'w'));
// copy the contents from the first stream to the second one
$stream1->pipe($stream2);

致谢

Streamer最初由fzaninotto开发,受到了其他流类实现的强烈启发