Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mikemccabe/json-patch-php
PHP implementation of JSON-patch (IETF RFC 6902)
https://github.com/mikemccabe/json-patch-php
Last synced: 3 months ago
JSON representation
PHP implementation of JSON-patch (IETF RFC 6902)
- Host: GitHub
- URL: https://github.com/mikemccabe/json-patch-php
- Owner: mikemccabe
- Created: 2012-07-05T09:14:48.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2019-02-26T14:06:26.000Z (over 5 years ago)
- Last Synced: 2024-04-04T06:44:28.921Z (7 months ago)
- Language: PHP
- Homepage:
- Size: 78.1 KB
- Stars: 111
- Watchers: 9
- Forks: 28
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-json - json-patch-php - implementation of JSON-patch (IETF RFC 6902) (PHP) (Differencing)
README
json-patch-php
================Produce and apply json-patch objects.
Implements IETF JSON-patch (RFC 6902) and JSON-pointer (RFC 6901):
http://tools.ietf.org/html/rfc6902
http://tools.ietf.org/html/rfc6901Using with Composer
-------------------To use this library as a Composer dependency in your project, include the
following sections in your project's `composer.json` file:```
"repositories": [
{
"type": "vcs",
"url": "https://github.com/mikemccabe/json-patch-php"
}
],
"require": {
"mikemccabe/json-patch-php": "dev-master"
}
```Then, in your project's code, use the `JsonPatch` class definition from
the `mikemccabe\JsonPatch` namespace like so:```php
use mikemccabe\JsonPatch\JsonPatch;
```Entry points
------------- JsonPatch::get($doc, $pointer) - get a value from a json document
- JsonPatch::patch($doc, $patches) - apply patches to $doc and return result
- JsonPatch::diff($src, $dst) - return patches to create $dst from $srcArguments are PHP arrays, i.e. the output of
json_decode($json_string, 1)(Note that you MUST pass 1 as the second argument to json_decode to
get an array. This library does not work with stdClass objects.)All structures are implemented directly as PHP arrays. An array is
considered to be 'associative' (e.g. like a JSON 'object') if it
contains at least one non-numeric key.Because of this, empty arrays ([]) and empty objects ({}) compare the
same, and (for instance) an 'add' of a string key to an empty array
will succeed in this implementation where it might fail in others.$simplexml_mode is provided to help with working with arrays produced
from XML in the style of simplexml - e.g. repeated XML elements are
expressed as arrays. When $simplexml_mode is enabled, leaves with
scalar values are implicitly treated as length-1 arrays, so this test
will succeed:{ "comment": "basic simplexml array promotion",
"doc": { "foo":1 },
"patch": [ { "op":"add", "path":"/foo/1", "value":2 } ],
"expected": { "foo":[1, 2] } },Also, when $simplexml_mode is true, 1-length arrays are converted to
scalars on return from patch().Tests
-----Some tests are in a submodule
(https://github.com/json-patch/json-patch-tests). Do 'git submodule
init' to pull these, then 'php runtests.php' to run them.[![Build Status](https://secure.travis-ci.org/mikemccabe/json-patch-php.png)](http://travis-ci.org/mikemccabe/json-patch-php)