holokron / json-patch
处理JSON补丁请求的库,兼容RFC 6902
0.1.0
2017-06-06 19:20 UTC
Requires
- php: >=7.0.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ~2.3
- michalv8/xpmock: ^1.2
- phpmetrics/phpmetrics: ^2.2.0
- phpstan/phpstan: ^0.6.4
- phpunit/phpunit: ^6.0
This package is not auto-updated.
Last update: 2024-09-20 19:35:15 UTC
README
一个简单的库,用于处理按照RFC 6902的Json Patch请求
其他库只是将一个JSON字符串更改为另一个字符串,但此代码的主要目的是执行特定的动作(在配置中定义的回调函数)
入门
先决条件
- PHP >= 7.0.0
安装
composer require holokron/json-patch
示例
配置
我们的示例类,其中包含应调用的方法
<?php namespace Example\Handler; use Example\Entity\Account; class UserHandler { public function add($value) { $value = json_encode($value); echo "UserHandler::add($value)\n"; } public function remove(int $id) { echo "UserHandler::remove($id)\n"; } public function replace(string $id, array $value) { $value = json_encode($value); echo "UserHandler::replace($id)($value)\n"; } }
我们的补丁器的配置
<?php use Example\Handler\UserHandler; use Holokron\JsonPatch as JsonPatch; $accountHandler = new UserHandler(); $builder = new JsonPatch\Definition\Builder(); $definitions = $builder ->op('add') ->path('/users') ->callback([$handler, 'add']) ->add() ->op('remove') ->path('/users/:userId') ->callback([$handler, 'remove']) ->requirement('userId', '[1-9]+\d*') ->add() ->op('replace') ->path('/users/:userId') ->callback([$handler, 'replace']) ->requirement('userId', '\w+') ->add() ->get(); $patcherFactory = new JsonPatch\Factory(); $patcher = $patcherFactory ->setMatcher(new JsonPatch\Matcher\Matcher($definitions)) ->create();
然后应用我们的示例JSON
[ { "op": "add", "path": "/users", "value": { "name": "super handler" } }, { "op": "remove", "path": "/users/123" }, { "op": "replace", "path": "/users/456", "value": { "foo": "bar" } } ]
我们将得到结果
UserHandler::add({"name":"super handler"}) UserHandler::remove(123) UserHandler::replace(456)({"foo":"bar"})