При сериализации 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.
Спасибо, Темури.