src/operations/PatchOperationInterface.php
<?php declare(strict_types=1);
namespace blancks\JsonPatch\operations;
use blancks\JsonPatch\exceptions\FastJsonPatchException;
/**
* Object implementing this interface should
* handle the patch application for a specific
* operation type
*/
interface PatchOperationInterface
{
/**
* Must return the operation name that the class will handle
* @return string
*/
public function getOperation(): string;
/**
* Ensures that $patch contains all the necessary data to perform the operation
* @param object $patch
* @return void
* @throws FastJsonPatchException
*/
public function validate(object $patch): void;
/**
* Applies $patch to $document
* @param mixed $document
* @param object $patch
* @return void
*/
public function apply(mixed &$document, object $patch): void;
/**
* Return the operation needed to revert last patch application
* @param object{
* op:string,
* path: string,
* value?: mixed,
* from?: string,
* } $patch
* @return null|array{
* op:string,
* path: string,
* value?: mixed,
* from?: string
* }
*/
public function getRevertPatch(object $patch): ?array;
}