For example, all classes which represent a piece of the data model have the same constructor: ```php /** * Constructs a User from a (parsed) JSON hash * * @param mixed $o Either an array (JSON) or an XMLReader. * * @throws \Exception */ public function __construct($o = null) { if (is_array($o)) { $this->initFromArray($o); } else if ($o instanceof \XMLReader) { $success = true; while ($success && $o->nodeType != \XMLReader::ELEMENT) { $success = $o->read(); } if ($o->nodeType != \XMLReader::ELEMENT) { throw new \Exception("Unable to read XML: no start element found."); } $this->initFromReader($o); } } ```