| 
<?php/**
 * Created by PhpStorm.
 * User: Theophilus Omoregbee <theo4u@ymail.com>
 * Date: 10/25/16
 * Time: 12:10 AM
 */
 
 include "Serialize.php";
 
 /**
 * this handles the parents of the user
 */
 class ParentTest
 {
 protected $email;
 protected $password;
 
 /**
 * @return mixed
 */
 public function getEmail()
 {
 return $this->email;
 }
 
 /**
 * @param mixed $email
 */
 public function setEmail($email)
 {
 $this->email = $email;
 }
 
 /**
 * @return mixed
 */
 public function getPassword()
 {
 return $this->password;
 }
 
 /**
 * @param mixed $password
 */
 public function setPassword($password)
 {
 $this->password = md5($password);
 }
 }
 
 class State
 {
 private $name;
 private $code;
 
 function __construct($name, $code)
 {
 $this->name = $name;
 $this->code = $code;
 }
 
 /**
 * @return mixed
 */
 public function getName()
 {
 return $this->name;
 }
 
 /**
 * @param mixed $name
 */
 public function setName($name)
 {
 $this->name = $name;
 }
 
 /**
 * @return mixed
 */
 public function getCode()
 {
 return $this->code;
 }
 
 /**
 * @param mixed $code
 */
 public function setCode($code)
 {
 $this->code = $code;
 }
 }
 
 class Country
 {
 private $name;
 private $code;
 private $states = array();
 
 function __construct($name, $code)
 {
 $this->name = $name;
 $this->code = $code;
 }
 
 /**
 * @return mixed
 */
 public function getName()
 {
 return $this->name;
 }
 
 /**
 * @param mixed $name
 */
 public function setName($name)
 {
 $this->name = $name;
 }
 
 /**
 * @return mixed
 */
 public function getCode()
 {
 return $this->code;
 }
 
 /**
 * @param mixed $code
 */
 public function setCode($code)
 {
 $this->code = $code;
 }
 
 /**
 * @return State[]
 */
 public function getStates()
 {
 return $this->states;
 }
 
 /**
 * @param State[] $states
 */
 public function setStates($states)
 {
 $this->states = $states;
 }
 
 /**
 * this is used to add state to our array if states
 * @param State $state
 */
 public function addState(State $state)
 {
 $this->states[] = $state;
 }
 
 }
 
 /**
 * Create a dummy user
 */
 class User extends ParentTest
 {
 private $firstname;
 private $lastname;
 private $states = array();
 private $country;
 private $dateCreated;
 private $roles = array();
 
 
 function __construct()
 {
 $this->dateCreated = time();
 }
 
 /**
 * @return mixed
 */
 public function getFirstname()
 {
 return $this->firstname;
 }
 
 /**
 * @param mixed $firstname
 */
 public function setFirstname($firstname)
 {
 $this->firstname = $firstname;
 }
 
 /**
 * @return mixed
 */
 public function getLastname()
 {
 return $this->lastname;
 }
 
 /**
 * @param mixed $lastname
 */
 public function setLastname($lastname)
 {
 $this->lastname = $lastname;
 }
 
 /**
 * @return mixed
 */
 public function getStates()
 {
 return $this->states;
 }
 
 /**
 * @param mixed $states
 */
 public function setStates($states)
 {
 $this->states = $states;
 }
 
 
 /**
 * @return Country
 */
 public function getCountry()
 {
 return $this->country;
 }
 
 /**
 * @param mixed $country
 */
 public function setCountry($country)
 {
 $this->country = $country;
 }
 
 /**
 * @return int
 */
 public function getDateCreated()
 {
 return $this->dateCreated;
 }
 
 /**
 * @param int $dateCreated
 */
 public function setDateCreated($dateCreated)
 {
 $this->dateCreated = $dateCreated;
 }
 
 /**
 * @return array
 */
 public function getRoles()
 {
 return $this->roles;
 }
 
 /**
 * @param array $roles
 */
 public function setRoles($roles)
 {
 $this->roles = $roles;
 }
 
 }
 
 //done creating dummy objects
 $user = new User();
 $user->setFirstname("Theophilus");
 $user->setLastname("Omoregbee");
 
 $user->setStates(array(new State("Edo state", "ED"), new State("Lagos State", "LG")));
 $user->setCountry(new Country("Nigeria", "NG"));
 
 $user->getCountry()->setStates($user->getStates());
 
 $user->setRoles(array("ADMIN", "DB MANAGER"));
 
 $user->setEmail("theo4u@ymail.com");
 $user->setPassword("1111");
 
 //lets serialize our object now
 header('Content-type: application/json');
 echo json_encode(SerializeMe::serialize($user));
 
 ?>
 |