Download the PHP package bumpcore/json-patch without Composer
On this page you can find all versions of the php package bumpcore/json-patch. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download bumpcore/json-patch
More information about bumpcore/json-patch
Files in bumpcore/json-patch
Package json-patch
Short Description RFC 6902 JSON Patch and RFC 7396 JSON Merge Patch implementation for PHP.
License MIT
Informations about the package json-patch
BumpCore JSON Patch
BumpCore JSON Patch is a dependency-free PHP package for working with JSON change documents. It supports RFC 6902 JSON Patch, RFC 7396 JSON Merge Patch, and RFC 6901 JSON Pointer.
Use it when you need to apply HTTP PATCH payloads, generate deterministic patch documents, address values inside JSON-like PHP data, or expose precise patch errors to API clients.
Table Of Contents
- Version Table
- Installation
- Quick Start
- Choosing a Patch Format
- JSON Patch
- Applying JSON Patch Documents
- Generating JSON Patch Documents
- Supported Operations
- JSON Merge Patch
- JSON Pointer
- JSON Values in PHP
- Exceptions
- Testing
- Contribution
- Changelog
- Credits
- License
Version Table
| BumpCore JSON Patch | PHP |
|---|---|
| 0.x | ^8.3 |
Installation
Install the package with Composer:
Quick Start
For JSON string input and output:
Choosing a Patch Format
This package supports two patch formats because they solve different problems.
Use JSON Patch when you need explicit operations:
Use JSON Merge Patch when the patch should look like the document shape:
JSON Patch can update individual array elements. JSON Merge Patch replaces
arrays as whole values and uses null object members as removals.
JSON Patch
JsonPatch implements RFC 6902.
Applying JSON Patch Documents
Patch application does not mutate the input document. It stops at the first failing operation, as RFC 6902 requires.
Generating JSON Patch Documents
JsonPatch::diff() generates readable add, remove, and replace
operations. It intentionally does not infer move or copy operations because
those require heuristic choices and can make generated patches harder to review.
For JSON text input and output:
Supported Operations
addremovereplacemovecopytest
The package exposes the RFC media type:
JSON Merge Patch
JsonMergePatch implements RFC 7396.
Merge Patch rules are intentionally simple:
- Object members are added or replaced.
- Object members set to
nullare removed. - Arrays are replaced as whole values.
- Non-object patches replace the whole target document.
For JSON text input and output:
The package exposes the RFC media type:
JSON Pointer
JsonPointer implements RFC 6901 pointer parsing and escaping.
Pointer helpers can also read and return modified copies of JSON-like values:
The helper methods do not mutate the original document.
JSON Values in PHP
The PHP-value APIs accept JSON-like PHP data:
- PHP lists are treated as JSON arrays.
stdClassobjects are treated as JSON objects.- Non-list PHP arrays are treated as JSON objects for ergonomic PHP usage.
- Non-finite floats and non-JSON PHP values are rejected.
When exact JSON shape matters, especially empty objects or numeric object member names, use the JSON string helpers:
Exceptions
All package-specific failures extend:
More specific exceptions are available:
InvalidPatchExceptionJsonPointerExceptionTestFailedException
Patch operation failures expose context when it is available:
Testing
Install development dependencies:
Run the test suite:
Run static analysis:
Check code style:
Run the 100% coverage gate:
The test suite includes the active upstream json-patch/json-patch-tests
fixtures. Coverage requires PCOV, Xdebug, or phpdbg.
Contribution
Contributions are welcome. If you find a bug or have a suggestion for improvement, please open an issue or create a pull request.
Please include tests for behavioral changes and run the quality checks before submitting a pull request:
Changelog
See CHANGELOG.md for version history.
Credits
- Abdulkadir Cemiloglu
- All Contributors
License
The MIT License (MIT). Please see License File for more information.