json_serialize( $object ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode } /** * Decode compressed serialized value. * * @param string $input Item to decode. * @return array|mixed|object */ public function decode( $input ) { return $this->json_unserialize( gzinflate( base64_decode( $input ) ) ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_decode } /** * Serialize JSON * * @see https://gist.github.com/muhqu/820694 * * @param string $any Value to serialize and wrap. * * @return false|string */ protected function json_serialize( $any ) { return wp_json_encode( Functions::json_wrap( $any ) ); } /** * Unserialize JSON * * @param string $str JSON string. * @return array|object Unwrapped JSON. */ protected function json_unserialize( $str ) { return $this->json_unwrap( json_decode( $str, true ) ); } /** * Unwraps a json_decode return. * * @param array|object $any json_decode object. * @return array|object */ private function json_unwrap( $any ) { if ( is_array( $any ) ) { foreach ( $any as $k => $v ) { if ( '__o' === $k ) { continue; } $any[ $k ] = $this->json_unwrap( $v ); } if ( isset( $any['__o'] ) ) { unset( $any['__o'] ); $any = (object) $any; } } return $any; } }