From d6c0bcb4fc60f8f01c3e2bf2febcd978ea8cd257 Mon Sep 17 00:00:00 2001 From: "Jonathan.Wage" Date: Mon, 24 Sep 2007 04:59:44 +0000 Subject: [PATCH] Initial entry for Resource refactoring. --- lib/Doctrine/Resource/Config.php | 35 ++++++++++++ lib/Doctrine/Resource/Params.php | 71 +++++++++++++++++++++++ lib/Doctrine/Resource/Request.php | 95 +++++++++++++++++++++++++++++++ 3 files changed, 201 insertions(+) create mode 100644 lib/Doctrine/Resource/Config.php create mode 100644 lib/Doctrine/Resource/Params.php create mode 100644 lib/Doctrine/Resource/Request.php diff --git a/lib/Doctrine/Resource/Config.php b/lib/Doctrine/Resource/Config.php new file mode 100644 index 000000000..39c4adeab --- /dev/null +++ b/lib/Doctrine/Resource/Config.php @@ -0,0 +1,35 @@ +. + */ + +/** + * Doctrine_Resource_Config + * + * @author Konsta Vesterinen + * @author Jonathan H. Wage + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Resource_Config extends Doctrine_Resource_Params +{ } \ No newline at end of file diff --git a/lib/Doctrine/Resource/Params.php b/lib/Doctrine/Resource/Params.php new file mode 100644 index 000000000..b0ecde656 --- /dev/null +++ b/lib/Doctrine/Resource/Params.php @@ -0,0 +1,71 @@ +. + */ + +/** + * Doctrine_Resource_Params + * + * @author Konsta Vesterinen + * @author Jonathan H. Wage + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Resource_Params +{ + protected $_data = array(); + + public function __construct($array = null) + { + if ($array !== null) { + foreach ($array as $key => $value) { + $this->set($key, $value); + } + } + } + + public function set($key, $value) + { + $this->_data[$key] = $value; + } + + public function get($key) + { + return isset($this->_data[$key]) ? $this->_data[$key]:null; + } + + public function has($key) + { + return isset($this->_data[$key]) ? true:false; + } + + public function remove($key) + { + unset($this->_data[$key]); + } + + public function getAll() + { + return $this->_data; + } +} \ No newline at end of file diff --git a/lib/Doctrine/Resource/Request.php b/lib/Doctrine/Resource/Request.php new file mode 100644 index 000000000..03311ff52 --- /dev/null +++ b/lib/Doctrine/Resource/Request.php @@ -0,0 +1,95 @@ +. + */ + +/** + * Doctrine_Resource_Request + * + * @author Konsta Vesterinen + * @author Jonathan H. Wage + * @package Doctrine + * @license http://www.opensource.org/licenses/lgpl-license.php LGPL + * @version $Revision$ + * @category Object Relational Mapping + * @link www.phpdoctrine.com + * @since 1.0 + */ +class Doctrine_Resource_Request extends Doctrine_Resource_Params +{ + protected $_params = null; + + public function getConfig($key = null) + { + return Doctrine_Resource_Client::getInstance()->getConfig($key); + } + + public function getParams() + { + if ($this->_params === null) { + $this->_params = new Doctrine_Resource_Params(); + } + + return $this->_params; + } + + public function get($key) + { + return $this->getParams()->get($key); + } + + public function set($key, $value) + { + return $this->getParams()->set($key, $value); + } + + public function execute() + { + $url = $this->getConfig()->get('url'); + $url .= strstr($this->getConfig()->get('url'), '?') ? '&':'?'; + $url .= http_build_query($this->getParams()->getAll()); + + $response = file_get_contents($url); + + return $response; + } + + public function hydrate(array $array, $model, $passedKey = null) + { + $config = $this->getConfig(); + + $collection = new Doctrine_Resource_Collection($model, $config); + + foreach ($array as $record) { + $r = new Doctrine_Resource_Record($model, $config); + + foreach ($record as $key => $value) { + if (is_array($value)) { + $r->set($key, $this->hydrate($value, $model, $config, $key)); + } else { + $r->set($key, $value); + } + } + + $collection[] = $r; + } + + return $collection; + } +} \ No newline at end of file