Skip to content

ridvanaltun/php-json-patch-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

php-json-patch-generator

Latest Stable Version Total Downloads Latest Unstable Version License composer.lock

Generate JSON Patch (IETF RFC-6902).

This library allows you generate json-patch in PHP.

Installation

$ composer require ridvanaltun/json-patch-generator

Usage

<?php

require_once __DIR__ . '/vendor/autoload.php';

use ridvanaltun\JsonPatchGenerator\Utils;

$utils = new Utils();

$oldSnap = [
  'name'    => 'foo',
  'surname' => 'bar',
  'skils'   => [
    'computer_science' => true,
    'algorithm'        => true,
    'math'             => false,
  ],
  'specs'   => [
    'a',
    'b',
    'c',
  ]
];

$currSnap = [
  'name'  => 'foo',
  'age'   => 23,
  'skils' => [
    'computer_science' => true,
    'algorithm'        => false,
  ],
  'specs' => [
    'a',
    'b',
    'd',
    'e',
  ]
];

$jsonPatch = $utils->generateJsonPatch($currSnap, $oldSnap);

var_dump($jsonPatch);

OUTPUT:

array(7) {
  [0]=>
  array(3) {
    ["op"]=>
    string(3) "add"
    ["path"]=>
    string(4) "/age"
    ["value"]=>
    int(23)
  }
  [1]=>
  array(3) {
    ["op"]=>
    string(7) "replace"
    ["path"]=>
    string(16) "/skils/algorithm"
    ["value"]=>
    bool(false)
  }
  [2]=>
  array(3) {
    ["op"]=>
    string(3) "add"
    ["path"]=>
    string(6) "/specs"
    ["value"]=>
    string(1) "d"
  }
  [3]=>
  array(3) {
    ["op"]=>
    string(3) "add"
    ["path"]=>
    string(6) "/specs"
    ["value"]=>
    string(1) "e"
  }
  [4]=>
  array(2) {
    ["op"]=>
    string(6) "remove"
    ["path"]=>
    string(8) "/surname"
  }
  [5]=>
  array(2) {
    ["op"]=>
    string(6) "remove"
    ["path"]=>
    string(11) "/skils/math"
  }
  [6]=>
  array(3) {
    ["op"]=>
    string(6) "remove"
    ["path"]=>
    string(6) "/specs"
    ["value"]=>
    string(1) "c"
  }
}