austinhyde/paperboat
Composer 安装命令:
composer require austinhyde/paperboat
包简介
A streaming JSON emitter
README 文档
README
This is an extremely simple, and very alpha quality implementation of a Streaming JSON outputter.
Show me the goods
$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();
This outputs, for example,
{"data":[{"id":1,"name":"Bill Murray"},{"id":2,"name":"Tom Hanks"},{"id":3,"name":"Sigourney Weaver"}],"meta":{"count":3}}
Usage
The primary class you interact with is PaperBoat\JsonStream. The constructor takes an optional PaperBoat\OutputStream parameter, which tells it where to output JSON to. By default, this is a PaperBoat\OutputStream\StdoutStream, which just prints to STDOUT or the HTTP response.
The following methods construct JSON output:
startArray()- Begins outputting an array.stopArray()- Closes an array.startObject()- Begins outputting an object.stopObject()- Closes an object.property($name[, $data])- Adds a property to an object. If you do not provide the value here, you must callstartArray(),startObject(), orvalue()next.value($data)- Adds data to the stream, by JSON encoding it.
The following methods control how data is output:
setAutomaticFlushing($value)- Controls whether theOutputStreamis flushed automatically after data is written to the stream. Defaults to true. If you set this false, you are responsible for calling->flush()when appropriate.setJsonFlags($value)- Sets the flags passed tojson_encode()flush()- Simply calls the providedOutputStream'sflush()method.
Installation
Via Composer.
$ composer require austinhyde/paperboat
Contributing
See CONTRIBUTING
FAQ
Why PaperBoat?
Streams of lightweight data => paper boats floating down a stream of water
Why do I need this?
You would use this if you need to output a large amount of JSON data without holding the whole data structure in memory at once.
Most people probably don't need this.
Why did you make this?
- I was bored
- It didn't exist yet
- Someone might need it, someday
Are these really frequently asked questions?
No, this is a sham, just like all the other FAQs on GitHub.
austinhyde/paperboat 适用场景与选型建议
austinhyde/paperboat 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 21 次下载、GitHub Stars 达 1, 最近一次更新时间为 2015 年 05 月 04 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 austinhyde/paperboat 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 austinhyde/paperboat 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 21
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 3
- 点击次数: 14
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2015-05-04