<?php
// Turn on all errors for debuggin purposes error_reporting(E_ALL);
require_once('../library/Util/ClassGenerator.php');
/** * A singleton class: The Family */ Class Family {
/** * The one and only instance will be kept here * @var Family */ protected static $instance = null;
/** * Mother * Used by the generator! * @var Mother */ protected $Mother = null;
/** * Father * @var Mother */ protected $Father = null; /** * Protected constructor */ protected function __construct(){ // How to create a family ? }
/** * Return the one an onyl family * Used by the generator! * @return Family */ public static function & getInstance(){ if (empty(self::$instance)) self::$instance= new Family(); return self::$instance; }
/** * Set father with this public method. * Used by the generator! * @param Father $Father */ public function setFather($Father){ $this->Father = $Father; } /** * Get "father" object * @return Father */ public function getFather(){ return $this->Father; } /** * Get "mother" object * return Mother */ public function getMother(){ return $this->Mother; } }
/** * Used by the generator to create the missing class "Child" */ Class HumanBeeing {
protected $name = '<DefaultValue>'; protected $children = array();
/** * Used by the generator! */ protected $inCome = 0.0; /** * Used by the generator! */ protected $sex = '?'; /** * Set the name of a human beeing * Used by the generator! * @param string $name */ public function setName( $name){ $this->name = $name; }
/** * Return the name * @return string */ public function getName( $name){ return $this->name; }
/** * Add a new child to this human beeing * Used by the generator! */ public function addChild(Child $child){ $this->children[] = $child; } }
Class Mother extends HumanBeeing{ protected $sex = 'female'; }
Class Father extends HumanBeeing{ protected $sex = 'male'; }
/** * Define the family as XML, where the mother brings in the children */
$XMLFamily = <<<XMLString <?xml version="1.0" standalone="yes" ?> <Family xmlns:cgen="http://www.example.com/namespaces#ClassGenerator" cgen:factMethod="getInstance" > <Mother name="Heidelinde" inCome="2501.0" > <Child cgen:extends="HumanBeeing" name="Anna" sex="female"/> <Child name="Lena" sex="female"/> </Mother> <Father name="Franz" inCome="2500.0"/> </Family> XMLString;
// Get generator $Generator = new Util_ClassGenerator(); // Create family .. $Family = $Generator->createFromXML($XMLFamily); // Let's take a look .. print_r ($Family);
|