lynglow
(Aetw Core)
1
Есть класс ActiveRecord с полем shedules типа string.
Хочу хранить в нем сериализованный массив и вне модели даже не подозревать, что фактически в поле лежит строка.
Чтобы при обращении к модели
$model->shedules возвращался массив.
при записи в это поле массив приводился к строке.
Подскажите пожалуйста, как это правильнее сделать.
lynglow
(Aetw Core)
2
Есть вариант добавить public свойство и в него грузить значение поля по событию afterFind и сохранять его в shedules по событию beforeSave.
Соответственно будем работать только с этим public свойством.
Мне не нравится этот метод. Есть ещё предложения?
ineersa
(Ineersa)
3
Если не нравится, можно переписать __get() и __set(). Но не думаю что это будет красивее. Должно быть что то такое:
public function __get($name){
if ($name != 'shedules')
return parent::__get($name);
else {
$schedules = parent::__get($name);
return (!empty($schedules))?unserialize($schedules):[];
}
}
Ну и с __set() что то похожее.