stolt/json-merge-patch

JSON Merge Patch(https://tools.ietf.org/html/rfc7396)的实现。

v2.0.1 2022-06-15 11:27 UTC

This package is auto-updated.

Last update: 2024-09-06 14:41:22 UTC


README

Test Version PHP Version

这是另一个JSON Merge Patch的实现,用PHP编写。如需PHP 5.3兼容版本,请使用@clue的实现。

通过Composer安装

composer require stolt/json-merge-patch

使用方法

现在您可以通过可用的Composer 自动加载文件 使用JSON Merge Patch for PHP。

应用补丁

<?php require_once 'vendor/autoload.php';

use Rs\Json\Merge\Patch;

$targetDocument = json_decode('{"title":"Goodbye!","author":{"givenName":"John","familyName":"Doe"},"tags":["example","sample"],"content":"This will be unchanged"}');

$patchDocument = json_decode('{"title":"Hello!","phoneNumber":"+01-123-456-7890","author":{"familyName":null},"tags":["example"]}');

$patchedDocument = (new Patch())->apply(
    $targetDocument,
    $patchDocument
); // '{"title":"Hello!","author":{"givenName":"John"},"tags":["example"],"content":"This will be unchanged","phoneNumber":"+01-123-456-7890"}'

生成补丁文档

<?php require_once 'vendor/autoload.php';

use Rs\Json\Merge\Patch;

$sourceDocument = json_decode('{"a":"b","b":"c"}');
$targetDocument = json_decode('{"b":"c"}');

$generatedPatchDocument = (new Patch())->generate(
    $sourceDocument,
    $targetDocument
); // '{"a":null}'

合并补丁文档

<?php require_once 'vendor/autoload.php';

use Rs\Json\Merge\Patch;

$patchDocument1 = json_decode('{"a":"b"}');
$patchDocument2 = json_decode('{"b":"c"}');

$mergedPatchDocument = (new Patch())->merge(
    $patchDocument1,
    $patchDocument2
); // '{"a":"b","b":"c"}'

运行测试

composer test

许可证

本库采用MIT许可证。有关更多详细信息,请参阅LICENSE

变更日志

有关更多详细信息,请参阅CHANGELOG

贡献

有关更多详细信息,请参阅CONTRIBUTING