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
)
{
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;
}
}
}