diff --git a/lib/Doctrine/Parser/Json.php b/lib/Doctrine/Parser/Json.php new file mode 100644 index 000000000..6754d06ea --- /dev/null +++ b/lib/Doctrine/Parser/Json.php @@ -0,0 +1,90 @@ +. + */ +/** + * Doctrine_Parser_Json + * + * @author Jonathan H. Wage + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision: 1080 $ + */ +class Doctrine_Parser_Json extends Doctrine_Parser +{ + /** + * dumpData + * + * Dump an array of data to a specified path or return + * + * @param string $array + * @param string $path + * @return void + * @author Jonathan H. Wage + */ + public function dumpData($array, $path = null) + { + $data = json_encode($array); + + if ($path) { + return file_put_contents($path, $data); + } else { + return $data; + } + } + /** + * loadData + * + * Load and unserialize data from a file or from passed data + * + * @param string $path + * @return void + * @author Jonathan H. Wage + */ + public function loadData($path) + { + if (file_exists($path) && is_readable($path)) { + $data = file_get_contents($path); + } else { + $data = $path; + } + + $json = json_decode($data); + + return $this->prepareData($json); + } + + public function prepareData($json) + { + $array = array(); + + foreach ($json as $key => $value) { + if (is_object($value) || is_array($value)) { + $array[$key] = $this->prepareData($value); + } else { + $array[$key] = $value; + } + } + + return $array; + } +} \ No newline at end of file diff --git a/lib/Doctrine/Parser/Serialize.php b/lib/Doctrine/Parser/Serialize.php new file mode 100644 index 000000000..449119164 --- /dev/null +++ b/lib/Doctrine/Parser/Serialize.php @@ -0,0 +1,73 @@ +. + */ +/** + * Doctrine_Parser_Serialize + * + * @author Jonathan H. Wage + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + * @version $Revision: 1080 $ + */ +class Doctrine_Parser_Serialize extends Doctrine_Parser +{ + /** + * dumpData + * + * Dump an array of data to a specified path or return + * + * @param string $array + * @param string $path + * @return void + * @author Jonathan H. Wage + */ + public function dumpData($array, $path = null) + { + $data = serialize($array); + + if ($path) { + return file_put_contents($path, $data); + } else { + return $data; + } + } + /** + * loadData + * + * Load and unserialize data from a file or from passed data + * + * @param string $path + * @return void + * @author Jonathan H. Wage + */ + public function loadData($path) + { + if (file_exists($path) && is_readable($path)) { + $data = file_get_contents($path); + } else { + $data = $path; + } + + return unserialize($data); + } +} \ No newline at end of file diff --git a/lib/Doctrine/Parser/Yml.php b/lib/Doctrine/Parser/Yml.php index 85cdcf243..a306a44ec 100644 --- a/lib/Doctrine/Parser/Yml.php +++ b/lib/Doctrine/Parser/Yml.php @@ -36,7 +36,7 @@ class Doctrine_Parser_Yml extends Doctrine_Parser /** * dumpData * - * Dump an array of data to a specified path to yml file + * Dump an array of data to a specified path or return * * @param string $array * @param string $path diff --git a/playground/index.php b/playground/index.php index c652b72c4..da600034f 100644 --- a/playground/index.php +++ b/playground/index.php @@ -21,7 +21,9 @@ if (isset($_REQUEST['server'])) { $query = new Doctrine_Resource_Query(); - $users = $query->from('User u')->execute(); + $users = $query->from('User u, u.Phonenumber p, u.Email e, u.Address a')->execute(); - print_r($users->toArray()); + $json = Doctrine_Parser::load(Doctrine_Parser::dump($users->getFirst()->toArray(true, true), 'json'), 'json'); + + print_r($json); } \ No newline at end of file