. */ namespace Balping\JsonRaw; class Encoder { /** * Encode array containing Raw objects to JSON * * @see json_encode * * @param mixed $value * @param int $options * @param int $depth [optional] * @return string|false */ static function encode($value, ...$args){ $rawObjects = []; // find raw object items in the input array array_walk_recursive($value, function($item) use (&$rawObjects){ if(is_object($item) && is_a($item, Raw::class)){ $rawObjects[] = &$item; } }); $encoded = json_encode($value, ...$args); return Replacer::replace($encoded, $rawObjects); } }