/**
 * 从对象实例容其中取出指定名字的对象实例(已经过时,用 FLEA::registry() 代替)
 *
 * @param string $name
 *
 * @return object
 * @deprecated
 */
function &ref($name = null)
{
    return FLEA::registry($name);
}
Exemple #2
0
 /**
  * 初始化关联对象
  */
 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;
     }
 }