/** * add object with Model (if not already added) * @param Object $pObject * @param boolean $pThrowException throw exception if object can't be added (no complete id or object already added) * @throws \Exception */ public function addObject(Object $pObject, $pThrowException = true) { if ($pObject->hasCompleteId()) { if ($pObject->getModel()->hasIdProperty()) { $lModelName = $pObject->getModel()->getModelName(); $lId = $pObject->getId(); if (!array_key_exists($lModelName, $this->mMap)) { $this->mMap[$lModelName] = array(); } // if object NOT already added, we can add it and create attached LocalObjectCollection if (!array_key_exists($lId, $this->mMap[$lModelName])) { $this->mMap[$lModelName][$lId] = $pObject; } else { if ($pThrowException) { throw new \Exception('object already added'); } } } } else { if ($pThrowException) { trigger_error(json_encode($pObject->toObject())); trigger_error($pObject->getModel()->getModelName()); trigger_error(json_encode($pObject->getModel()->getIdproperties())); throw new \Exception('object can\'t be added, object has no id or id is incomplete'); } } }
public function loadValue(Object $pObject) { if ($pObject->getModel() !== $this->getUniqueModel()) { throw new \Exception('object not compatible with property '); } $lSerializationUnit = $this->getUniqueModel()->getSerialization(); if (is_null($lSerializationUnit)) { trigger_error("+++++++++ no serial +++++++++"); return false; } return $lSerializationUnit->loadObject($pObject); }
/** * execute controller * @param Oject $pObject * @param array $pParams * @param array $pVisitRootObject * @return unknown|boolean */ public final function execute(Object $pObject, $pParams = array()) { $this->_verifParameters($pParams); if ($pObject->getModel() instanceof Model || $pObject->getModel() instanceof ModelArray) { $this->mPropertyNameStack = array(); $this->mMainObject = $pObject; $this->mParams = $pParams; $this->_init($pObject); if ($this->_isVisitRootObject()) { $lModelName = $pObject->getModel()->getModelName(); $lProperty = new ForeignProperty($pObject->getModel(), $lModelName); $lCustomModel = new ModelCustom('modelCustom', array($lProperty)); $lRootObject = $lCustomModel->getObjectInstance(); $lRootObject->setValue($lModelName, $pObject); $this->_accept($lRootObject, $lModelName, $lModelName); } else { $this->_acceptChildren($pObject); } return $this->_finalize($pObject); } return false; }
/** * add object with localModel (only if not already added) * @param Object $pObject * @param boolean $pThrowException throw exception if an object with same id already exists * @return boolean true if object is added */ public function addObject(Object $pObject, $pThrowException = true) { if (!$pObject->getModel() instanceof LocalModel) { throw new \Exception('mdodel must be instance of LocalModel'); } $lReturn = false; $lId = $pObject->getId(); if (!$pObject->getModel()->hasIdProperty() || !$pObject->hasCompleteId()) { return $lReturn; } $pModelName = $pObject->getModel()->getModelName(); if (!array_key_exists($pModelName, $this->mMap)) { $this->mMap[$pModelName] = array(); } if (!array_key_exists($lId, $this->mMap[$pModelName])) { $this->mMap[$pModelName][$lId] = $pObject; $lReturn = true; } else { if ($pThrowException) { throw new \Exception('object already added'); } } return $lReturn; }
public function toXmlId(Object $pObject, $pXmlNode, $pUseSerializationName = false, $pTimeZone = null, &$pMainForeignObjects = null) { if ($pObject->getModel() !== $this) { throw new \Exception('current model instance must be same instance of object model'); } return $this->_toXmlId($pObject, $pXmlNode, $pUseSerializationName, new \DateTimeZone(is_null($pTimeZone) ? date_default_timezone_get() : $pTimeZone), $pMainForeignObjects); }
/** * (non-PHPdoc) * @see \comhon\object\object\SerializationUnit::_loadObject() */ protected function _loadObject(Object $pObject) { $lWhereColumns = []; $lModel = $pObject->getModel(); foreach ($lModel->getIdProperties() as $lPropertyName) { $lWhereColumns[$lModel->getProperty($lPropertyName)->getSerializationName()] = $pObject->getValue($lPropertyName); } $lReturn = $this->_loadObjectFromDatabase($pObject, array(), $lWhereColumns, LogicalJunction::CONJUNCTION); return $lReturn; }