lindelius / php-json-patch
JSON Patch 的无依赖 PHP 实现
0.1.1
2021-07-14 21:24 UTC
Requires
- php: ^7.4||^8.0
- ext-json: *
Requires (Dev)
- php-coveralls/php-coveralls: ^2.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-19 05:59:21 UTC
README
JSON Patch 的无依赖 PHP 实现 (RFC 6902).
目录
需求
- PHP 7.4 或更高版本
安装
如果您使用 Composer,您可以从项目的根目录运行以下命令来安装此库的最新版本
composer require lindelius/php-json-patch
您还可以通过导航到“发行版”页面,然后展开最新发行版的“资产”部分来手动下载库。
使用
给定一组 JSON Patch 操作...
[ { "op": "test", "path": "/name", "value": "Anakin Skywalker" }, { "op": "replace", "path": "/name", "value": "Darth Vader" }, { "op": "add", "path": "/order", "value": "Sith" }, { "op": "move", "from": "/friends", "path": "/foes" } ]
以及一个文档...
{ "name": "Anakin Skywalker", "friends": ["Obi-Wan Kenobi", "Ahsoka Tano"], "order": "Jedi" }
您可以通过 PatcherInterface
中的方法之一(原子性地)应用补丁...
// Option 1: Provide the raw JSON string $newDocument = $patcher->patchFromJson($documentAsArray, $operationsAsJson); // Option 2: Provide the JSON Patch operations in array format $newDocument = $patcher->patch($documentAsArray, $operationsAsArray);
并获得一个新的文档 :)
{ "name": "Darth Vader", "foes": ["Obi-Wan Kenobi", "Ahsoka Tano"], "order": "Sith" }
受保护路径
此库内置了对注册“受保护路径”的支持,这些路径可能不会被任何补丁操作修改。受保护路径也将间接阻止对其父路径(或路径)及其任何子路径的修改。
$patcher->addProtectedPath("/id"); $patcher->addProtectedPath("/created_at"); $patcher->addProtectedPath("/some/nested/path");
请注意,“测试”操作仍然可以操作受保护路径,因为它们实际上并没有修改文档。