protected function _setProperties($var) { $this->_data = array(); if (ObjectModel::getObjectExtends($var)) { $properties = ObjectModel::getObjectProperties(ObjectModel::getObjectExtends($var)); } else { $properties = array(); } if (is_array(ObjectModel::getObjectProperties($var))) { $properties += ObjectModel::getObjectProperties($var); } if ($properties !== false) { foreach ($properties as $propertyId => $propertyParams) { $type = isset($propertyParams['type']) ? $propertyParams['type'] : null; $this->_data[$propertyId] = Property::factory($propertyId, $type, $propertyParams); $this->_data[$propertyId]->setParent($this); } } else { throw new DataObject\Exception(array("MISSING_DEFINITION", $var)); } }
/** * Returns the matching t41_Property_* object instance * * @param string $str value must be of form <class_id>.<property_id> * @return t41_Property_Abstract * @throws ObjectModel\Exception */ public static function getObjectProperty($str) { list($class, $property) = explode('.', $str); if (!$class || !$property) { throw new ObjectModel\Exception(array("INCORRECT_PROPERTY_DESCRIPTOR", $str)); } $props = self::getObjectProperties($class); if (isset($props[$property])) { require_once 't41/Property.php'; return ObjectModel\Property::factory($property, $props[$property]['type'], $props[$property]); } else { require_once 't41/Object/Exception.php'; throw new ObjectModel\Exception("NO_SUCH_PROPERTY"); } }