diff --git a/DataMapper/Test.php b/DataMapper/Test.php new file mode 100644 index 0000000..47e8c9d --- /dev/null +++ b/DataMapper/Test.php @@ -0,0 +1,27 @@ +findById(1); + + if ($user !== null) { + echo "Hello " . $user->getUsername() . ". Your email is " . $user->getEmail(); + } + + /* save a new record on Database */ + var $newUser = new User('', 'Odysseus', 'Odysseus@ithaca.gr'); + $userMapper->save($newUser); + + /* fetch all from a table on Database */ + var $usersArray = $userMapper->findAll(); + +?> diff --git a/DataMapper/User.php b/DataMapper/User.php new file mode 100644 index 0000000..dd19cbe --- /dev/null +++ b/DataMapper/User.php @@ -0,0 +1,48 @@ +id = $id; + $this->username = $username; + $this->email = $email; + } + + public function getUserId() { + return $this->userId; + } + + public function setUserID($userId) { + $this->userId = $userId; + } + + public function getUsername() { + return $this->username; + } + + public function setUsername($username) { + $this->username = $username; + } + + public function getEmail() { + return $this->email; + } + + public function setEmail($email) { + $this->email = $email; + } + +} \ No newline at end of file diff --git a/DataMapper/UserMapper.php b/DataMapper/UserMapper.php new file mode 100644 index 0000000..ff5bcce --- /dev/null +++ b/DataMapper/UserMapper.php @@ -0,0 +1,111 @@ + $user->getUserId(), + 'username' => $user->getUsername(), + 'email' => $user->getEmail(), + ); + + /* if no ID specified create new user else update the one in the Database */ + if (null === ($id = $user->getUserId())) { + unset($data['userid']); + $this->_adapter->insert($data); + return true; + } else { + $this->_adapter->update($data, array('userid = ?' => $id)); + return true; + } + + return false; + } + + /** + * finds a user from Database based on ID and returns a User object located + * in memory + * + * @return User + */ + public function findById($id) + { + $result = $this->_adapter->find($id); + if (0 == count($result)) { + return; + } + $row = $result->current(); + + var user = new User(); + $user->setUserID($row['userid']); + $user->setUsername($row['username']); + $user->setEmail($row['email']); + + return user; + } + + /** + * fetches an array from Database and returns an array of User objects + * located in memory + * + * @return array + */ + public function findAll() + { + $resultSet = $this->_adapter->findAll(); + $entries = array(); + + foreach ($resultSet as $row) { + + $entry = new User(); + $user->setUserID($row['userid']); + $user->setUsername($row['username']); + $user->setEmail($row['email']); + + $entries[] = $entry; + } + + return $entries; + } +} \ No newline at end of file