我需要保存一些数据用于缓存目的。问题是这些数据可能包含 std 对象或关联数组。 “创建”方法将所有内容保存为关联数组,因此当我需要此缓存数据时,我会遇到问题,因为尝试将属性作为关联数组上的对象读取,反之亦然。 一个例子:
CachedData::create([
'type' => 'pr',
'stage' => 'fetching',
'data' => [
'name' => 'pr_name',
'history' => [
0 => { //This is a representation of std object
+"price" => 10.00,
+"datetime" => "2023-10-22 01:32:00"
}
]
]
])
当我获取数据时,结果是:
[
'name' => 'pr_name'
'history' => [
0 => [ //Array instead of object
'price' => 10.00,
'datetime' => "2023-10-22 01:32:00"
]
]
]
数据总是可变的。那么有没有办法让值类型与保存时保持一致呢?
我找到了路。只需在保存之前序列化数据即可:
CachedData::create(['data' => serialize($data)]);
然后你可以在需要的时候反序列化:
unserialize(CachedData::get()->data);
它将保持您的对象与保存时一样