austinhyde / paperboat
流式 JSON 发射器
v0.1.0
2015-05-04 03:56 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: 4.*
This package is not auto-updated.
Last update: 2024-09-14 17:19:56 UTC
README
这是一个极其简单,且质量非常初级的流式 JSON 输出器实现。
展示内容
$stream = new PaperBoat\JsonStream(); $stream ->startObject() ->property('data') ->startArray(); $i = 0; while ($row = $pdoStmt->fetch(PDO::FETCH_ASSOC)) { $i++; $stream->value($row); } $stream ->stopArray() ->property('meta') ->startObject() ->property('count', $i) ->stopObject() ->stopObject();
例如,它输出以下内容:
{"data":[{"id":1,"name":"Bill Murray"},{"id":2,"name":"Tom Hanks"},{"id":3,"name":"Sigourney Weaver"}],"meta":{"count":3}}
用法
您主要交互的类是 PaperBoat\JsonStream
。构造函数接受一个可选的 PaperBoat\OutputStream
参数,该参数告诉它将 JSON 输出到何处。默认情况下,这是 PaperBoat\OutputStream\StdoutStream
,它只是打印到 STDOUT 或 HTTP 响应。
以下方法用于构建 JSON 输出
startArray()
- 开始输出一个数组。stopArray()
- 关闭一个数组。startObject()
- 开始输出一个对象。stopObject()
- 关闭一个对象。property($name[, $data])
- 向对象添加一个属性。如果您在这里不提供值,您必须调用startArray()
、startObject()
或value()
。value($data)
- 通过 JSON 编码将数据添加到流中。
以下方法控制数据的输出方式
setAutomaticFlushing($value)
- 控制在数据写入流后是否自动刷新OutputStream
。默认值为 true。如果您将其设置为 false,您将负责在适当的时候调用->flush()
。setJsonFlags($value)
- 设置传递给json_encode()
的标志。flush()
- 简单地调用提供的OutputStream
的flush()
方法。
安装
通过 Composer。
$ composer require austinhyde/paperboat
贡献
常见问题解答
为什么是 PaperBoat?
轻量级数据流 > 水流中的纸船
为什么我需要这个?
如果您需要在一次内存中不保留整个数据结构的情况下输出大量 JSON 数据,则可以使用此工具。
大多数人可能不需要这个。
为什么你要创建这个?
- 我很无聊
- 它还没有存在
- 某天可能会有人需要它
这些真的是常见问题吗?
不,这只是一个骗局,就像 GitHub 上的其他所有常见问题解答一样。