用于给ORM回调设置数据
null Module_OOP_ORM_Data::__orm_callback_ini_data_( [ array $data = null , boolean $is_field_key = bool false ] )
参数列表
参数 类型 描述 默认值 $data
array
待设置的数据 null $is_field_key
boolean
待设置的数据的key是否数据库的字段,true是,false则为offset bool false
protected function __orm_callback_ini_data_($data = null, $is_field_key = false)
{
if ( !is_array($data) ) return false;
# 记录当前orm是否构造完成
$created = $this->_orm_data_is_created;
# 将orm设置为未构造状态,因为set_data时会根据构造状态执行不同的操作
$this->_orm_data_is_created = false;
# 如果是字段数据,则整理为offset数据
if ( $is_field_key )
{
foreach ($data as $key=>$value)
{
# 获取当前字段的首个offset
$offset = current($this->_get_offset_name_by_field($key));
if (!$offset)
{
$offset = $key;
}
$this->set_data($offset, $value , false);
}
}
else
{
# 设置数据
$this->set_data($data, null , false);
}
# 还原状态
$this->_orm_data_is_created = $created;
# ID数据缓存,用于重复ID主键数据查询时直接返回
if (IS_CLI && $is_field_key)
{
$id_field_name = $this->id_field_name();
$id = $data[$id_field_name];
if ( OOP_ORM_Data::$_id_field_cache_data_num > OOP_ORM_Data::$max_id_cache_num )
{
// 超过最大cache数则清除掉
OOP_ORM_Data::$_id_field_cache_data = array();
}
if ( $id && !isset(OOP_ORM_Data::$_id_field_cache_data[$this->_class_name][$id]) )
{
OOP_ORM_Data::$_id_field_cache_data[$this->_class_name][$id] = $data;
OOP_ORM_Data::$_id_field_cache_data_num += 1;
}
}
}