available_formats ) == true ) { $this->format = $format; } return true; } /** * @param $data * @return string */ function PHPSerialize( $data ) { return serialize( $data ); } /** * @param $data * @return mixed */ function PHPDeSerialize( $data ) { return unserialize( $data ); } /** * @param $data * @return string */ function JSONSerialize( $data ) { return json_encode( $data ); } /** * @param $data * @return mixed */ function JSONDeSerialize( $data ) { return json_decode( $data ); } /** * @param $xml * @return array|string */ function extractXML( $xml ) { if ( !( $xml->children() ) ) { return (string)$xml; } $element = []; foreach ( $xml->children() as $child ) { $name = $child->getName(); if ( count( $xml->$name ) == 1 ) { $element[$name] = $this->extractXML( $child ); } else { $element[$name][] = $this->extractXML( $child ); } } return $element; } /** * @param $value * @param $key * @param $tmp_xml */ function XMLArrayWalkCallBack( &$value, $key, $tmp_xml ) { $tmp_xml->addChild( $key, $value ); } /** * @param $data * @return mixed */ function XMLSerialize( $data ) { if ( is_array( $data ) ) { //The first level should be the class name as a key. /* //Example array: array 'UserFactory' => array 0 => array 'id' => string '6217' (length=4) 'company_id' => string '1064' (length=4) */ foreach ( $data as $class => $objects ) { $this->simple_xml_obj = new SimpleXMLElement( '' ); foreach ( $objects as $value ) { $tmp_xml = $this->simple_xml_obj->addChild( $class, '' ); array_walk_recursive( $value, [ $this, 'XMLArrayWalkCallBack' ], $tmp_xml ); } } } $retval = $this->simple_xml_obj->asXML(); unset( $this->simple_xml_obj ); return $retval; } /** * @param $data * @return array|string */ function XMLDeSerialize( $data ) { $xml = simplexml_load_string( $data ); if ( $xml ) { return $this->extractXML( $xml ); } return false; } /** * @param $data * @return mixed */ function serialize( $data ) { $function = $this->format . 'Serialize'; return $this->$function( $data ); } /** * @param $data * @return mixed */ function deserialize( $data ) { $function = $this->format . 'DeSerialize'; return $this->$function( $data ); } } ?>