You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
2.7 KiB
83 lines
2.7 KiB
<?php
|
|
|
|
/**
|
|
*
|
|
* @package Duplicator
|
|
* @copyright (c) 2021, Snapcreek LLC
|
|
*/
|
|
|
|
namespace Duplicator\Libs\Snap\JsonSerialize;
|
|
|
|
use Duplicator\Libs\Snap\SnapJson;
|
|
use Duplicator\Libs\Snap\SnapLog;
|
|
use Exception;
|
|
|
|
/**
|
|
* This class serializes and deserializes a variable in json keeping the class type and saving also private objects
|
|
*/
|
|
class JsonSerialize extends AbstractJsonSerializeObjData
|
|
{
|
|
/**
|
|
* Return json string
|
|
*
|
|
* @param mixed $value value to serialize
|
|
* @param integer $flags json_encode flags
|
|
* @param integer $depth json_encode depth
|
|
*
|
|
* @link https://www.php.net/manual/en/function.json-encode.php
|
|
*
|
|
* @return string|bool Returns a JSON encoded string on success or false on failure.
|
|
*/
|
|
public static function serialize($value, $flags = 0, $depth = 512)
|
|
{
|
|
return SnapJson::jsonEncode(self::valueToJsonData($value, $flags), $flags, $depth);
|
|
}
|
|
|
|
/**
|
|
* Unserialize from json
|
|
*
|
|
* @param string $json json string
|
|
* @param integer $depth json_decode depth
|
|
* @param integer $flags json_decode flags
|
|
*
|
|
* @link https://www.php.net/manual/en/function.json-decode.php
|
|
*
|
|
* @return mixed
|
|
*/
|
|
public static function unserialize($json, $depth = 512, $flags = 0)
|
|
{
|
|
// phpcs:ignore PHPCompatibility.FunctionUse.NewFunctionParameters.json_decode_optionsFound
|
|
$publicArray = (version_compare(PHP_VERSION, '5.4', '>=') ? json_decode($json, true, $depth, $flags) : json_decode($json, true, $depth)
|
|
);
|
|
return self::jsonDataToValue($publicArray);
|
|
}
|
|
|
|
/**
|
|
* Unserialize json on passed object
|
|
*
|
|
* @param string $json json string
|
|
* @param object|string $obj object to fill or class name
|
|
* @param integer $depth json_decode depth
|
|
* @param integer $flags json_decode flags
|
|
*
|
|
* @link https://www.php.net/manual/en/function.json-decode.php
|
|
*
|
|
* @return object
|
|
*/
|
|
public static function unserializeToObj($json, $obj, $depth = 512, $flags = 0)
|
|
{
|
|
if (is_object($obj)) {
|
|
} elseif (is_string($obj) && class_exists($obj)) {
|
|
$obj = self::getObjFromClass($obj);
|
|
} else {
|
|
throw new Exception('invalid obj param');
|
|
}
|
|
// phpcs:ignore PHPCompatibility.FunctionUse.NewFunctionParameters.json_decode_optionsFound
|
|
$value = (version_compare(PHP_VERSION, '5.4', '>=') ? json_decode($json, true, $depth, $flags) : json_decode($json, true, $depth)
|
|
);
|
|
if (!is_array($value)) {
|
|
throw new Exception('json value isn\'t an array VALUE: ' . SnapLog::v2str($value));
|
|
}
|
|
return self::fillObjFromValue($value, $obj);
|
|
}
|
|
}
|
|
|