machitgarha / json
1.0.2
2019-08-26 18:17 UTC
Requires
- php: ^7.0
- ext-json: *
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.15
- phan/phan: ^2.2
- phpunit/phpunit: 7.*
Suggests
- machitgarha/json-file: Handles your JSON files
- dev-master
- 1.0.2
- 1.0.1
- 1.0.0
- 1.0.0-rc.3
- 1.0.0-rc.2
- 1.0.0-rc.1
- 1.0.0-beta.4
- 1.0.0-beta.3
- 1.0.0-beta.2
- 1.0.0-beta.1
- 1.0.0-alpha.4
- 1.0.0-alpha.3
- 1.0.0-alpha.2
- 1.0.0-alpha.1
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0+1
- 0.3.0-rc.4
- 0.3.0-rc.3
- 0.3.0-rc.2
- 0.3.0-rc.1
- 0.2.0
- 0.2.0-rc.2
- 0.2.0-rc.1
- 0.2.0-beta.1
- 0.2.0-alpha.1
- 0.1.0
- dev-develop
- dev-performance-tests
- dev-metadata
This package is auto-updated.
Last update: 2021-09-17 09:38:24 UTC
README
不再维护
此仓库不再维护,已被弃用。强烈不建议使用。
我们不需要另一个Json包,因为它既没有需求,也没有独特或有用的功能。让我们关注更重要的事情,或者至少是改进现有的库、项目等。如果您认为这是一个错误的决定(例如,您是这个库的活跃用户,找不到替代方案),请提交一个问题。
这个仓库应被视为我所做工作的展示。您可以自由地切换到develop
分支,猜测2.0.0版本会是什么样子,并思考它如何解决任何问题。
此库的替代方案是Webmozart Json。
这是什么?
您的JSON数据组件。嗯!就这么简单?不!请继续阅读。
为什么是JSON?
性能
注意:遗憾的是,该库的性能似乎不可扩展。微观优化的一个亮点。专注于最不重要的事情的结果。请参阅#59以获取更多详细信息。
灵活
- Json不仅用于JSON数据。那么呢?支持许多类型,包括JSON字符串、数组、对象和标量(+ null)。资源不受支持,也不会支持(因为标准)。
- 无论数据类型如何,都可以使用方法。合并两个对象?实际上。
- 使用可调用对象执行任何操作,即使类中没有提供。替代方案?从类扩展并定义自己的内容。当然,两种情况都很容易。
- 哦,如果索引不存在怎么办?异常。解析错误的JSON数据?再次异常。警告和通知?非常罕见的情况。
多种方式
像JavaScript的点来获取索引,还是原生PHP数组?选择。即使使用JavaScript-like索引,您也可以将索引传递给方法,或者可以使用Json::index()
。这是您的决定。
示例
来自PHPUnit源代码的一个示例
function prettify(string $json): string { $decodedJson = \json_decode($json, true); if (\json_last_error()) { throw new Exception( 'Cannot prettify invalid json' ); } return \json_encode($decodedJson, \JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES); }
看起来不错,但可以更好
// use MAChitgarha\Component\Json function prettify(string $jsonStr): string { return Json::new($jsonStr)->getAsJson(\JSON_PRETTY_PRINT | \JSON_UNESCAPED_SLASHES); }
优势
- 处理不同异常更容易。不仅仅是得到“无法美化无效的JSON”。根据发生的错误获取异常消息。调试将更容易。
- 代码更少。看起来更漂亮。一行。此外,有时您甚至不需要定义该方法,可以直接使用Json而不需要函数开销。
好!我需要什么?
几乎什么都没有。PHP7默认包含的JSON扩展,以及通常的Composer。
安装
Composer已经存在了!
composer require machitgarha/json
注意:您也可以克隆项目并按照自己的方式加载文件。不过,推荐的方式是使用Composer。
文档
注意:该文档已过时,针对1.0.0+版本。
请参阅GitHub维基。
贡献?
尽管该库不再维护,但您可以在这里查看贡献指南。