序列化 Phalcon\Mvc\Model 会丢失不属于架构的对象属性。
我有以下模型,它在加载时设置状态数组:
class Country extends Phalcon\Mvc\Model
{
protected $states;
public function initialize()
{
$this->setSource('countries');
}
public function afterFetch()
{
if ($this->id) {
$this->states = ['AL', 'AZ', 'NV', 'NY'];
}
}
}
我这样做:
$country = Country::findFirst($countryId);
$serialized = serialize($country);
$unserialized = unserialize($serialized);
$serialized字符串甚至不包含“状态”子字符串。因此,未序列化的对象中缺少“状态”。
我在处理会话中的用户身份验证和持久性(涉及序列化/反序列化)时发现了这一点。我的 User 对象丢失了在 afterFetch() 阶段加载的所有属性。
两个问题:
- 为什么“状态”属性在序列化时消失了?
- 在 Phalcon 世界中,持久化模型是一种不好的做法(我认为这是在会话中存储用户对象的一种方便方式)?
我在 Phalcon 1.3.0 上。
谢谢, Temuri