kjljon/streamingiterable
使用PSR-7将可迭代对象转换为流,无需其他依赖
v1.0.0
2022-07-18 02:33 UTC
Requires
- php: ^8.0
- psr/http-message: ^1.0
Requires (Dev)
- phpunit/phpunit: ^9.5
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);
问题/评论
请提交问题或拉取请求