lindelius/php-json-patch

JSON Patch 的无依赖 PHP 实现

0.1.1 2021-07-14 21:24 UTC

This package is auto-updated.

Last update: 2024-09-19 05:59:21 UTC


README

CircleCI Coverage Status

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");

请注意,“测试”操作仍然可以操作受保护路径,因为它们实际上并没有修改文档。