/** * 将一个对象实例注册到对象实例容器(已经过时,用 FLEA::register() 代替) * * @param object $obj * @param string $name * * @return object * @deprecated */ function ®(&$obj, $name = null) { return FLEA::register($obj, $name); }
/** * 初始化关联对象 */ function init() { if ($this->init) { return; } if (FLEA::isRegistered($this->assocTDGObjectId)) { $this->assocTDG =& FLEA::registry($this->assocTDGObjectId); } else { if ($this->assocTDGObjectId) { FLEA::loadClass($this->tableClass); $this->assocTDG =& new $this->tableClass(array('dbo' => &$this->dbo)); FLEA::register($this->assocTDG, $this->assocTDGObjectId); } else { $this->assocTDG =& FLEA::getSingleton($this->tableClass); } } $this->init = true; }
/** * 初始化 * * @param array $options */ function init() { if ($this->init) { return; } $this->init = true; $myclass = get_class($this); $options = call_user_func(array($myclass, 'define')); $tableClass = $options['tableClass']; $objid = "{$myclass}_tdg"; if (FLEA::isRegistered($objid)) { $this->_table =& FLEA::registry($objid); } else { FLEA::loadClass($tableClass); $this->_table =& new $tableClass(array('skipCreateLinks' => true)); FLEA::register($this->_table, $objid); } if (!empty($options['propertiesMapping'])) { $this->_mapping = array('p2f' => $options['propertiesMapping'], 'f2p' => array_flip($options['propertiesMapping'])); $this->_idname = $this->_mapping['f2p'][$this->_table->primaryKey]; } else { $this->_mapping = array('p2f' => array(), 'f2p' => array()); foreach ($this->_table->meta as $field) { $this->_mapping['p2f'][$field['name']] = $field['name']; $this->_mapping['f2p'][$field['name']] = $field['name']; } $this->_idname = $this->_table->primaryKey; } if (!isset($options['aggregation']) || !is_array($options['aggregation'])) { $options['aggregation'] = array(); } foreach ($options['aggregation'] as $offset => $define) { if (!isset($define['mappingName'])) { $define['mappingName'] = substr(strtolower($define['tableClass']), 0, 1) . substr($define['tableClass'], 1); } if ($define['mappingType'] == HAS_MANY || $define['mappingType'] == MANY_TO_MANY) { $this->{$define['mappingName']} = array(); } else { $this->{$define['mappingName']} = null; } /** * 获得聚合对象的定义信息 */ FLEA::loadClass($define['class']); $options = call_user_func(array($define['class'], 'define')); $link = array('tableClass' => $options['tableClass'], 'mappingName' => $define['mappingName'], 'foreignKey' => isset($define['foreignKey']) ? $define['foreignKey'] : null); if ($define['mappingType'] == MANY_TO_MANY) { $link['joinTable'] = isset($define['joinTable']) ? $define['joinTable'] : null; $link['assocForeignKey'] = isset($define['assocForeignKey']) ? $define['assocForeignKey'] : null; } $this->_table->createLink($link, $define['mappingType']); $define['link'] =& $this->_table->getLink($link['mappingName']); $this->_aggregation[$offset] = $define; } }