kjljon/streamingiterable

使用PSR-7将可迭代对象转换为流,无需其他依赖

v1.0.0 2022-07-18 02:33 UTC

This package is not auto-updated.

Last update: 2024-09-24 11:04:58 UTC


README

该包的目的是使以流的形式处理可迭代数据更加容易

解决的问题

我发现自己在将数据导出到文件系统并使用flysystem的writeStream时遇到了问题。当你没有足够的本地存储来写入大型导出时,这会成为问题。

因此,我的第一次迭代非常丑陋(但有效),然后我看到了Guzzle的PSR-7包如何使用StreamWrapper以及PSR-7,并认为我可以重构我的应用程序以使用PSR-7。

我的第二次迭代是有效的,但仍然假设导出是特定文件类型(csv)。
当我需要流式传输JSON时,我决定再次重构,通过添加格式化装饰器的能力。

用法

$iterable = [
    ['first' => 'Jim', 'last' => 'Thompson', 'month' => 'April'],
    ['first' => 'Tim', 'last' => 'Johnson', 'month' => 'December']
];

$formatter = new KJLJon\StreamingIterable\Formatter\CsvFormatter();
$stream = new KJLJon\StreamingIterable\IterableToReaderStream($iterable, $formatter);
$fp = KJLJon\StreamingIterable\StreamWrapper::getResource($stream);

//do something with stream (IE: flyweight's writeStream($location, $fp);
fpassthru($fp);

fclose($fp);

问题/评论

请提交问题或拉取请求