Предобработка значения поля перед получением и сохранением

Есть класс ActiveRecord с полем shedules типа string.

Хочу хранить в нем сериализованный массив и вне модели даже не подозревать, что фактически в поле лежит строка.

Чтобы при обращении к модели

$model->shedules возвращался массив.

при записи в это поле массив приводился к строке.

Подскажите пожалуйста, как это правильнее сделать.

Есть вариант добавить public свойство и в него грузить значение поля по событию afterFind и сохранять его в shedules по событию beforeSave.

Соответственно будем работать только с этим public свойством.

Мне не нравится этот метод. Есть ещё предложения?

Если не нравится, можно переписать __get() и __set(). Но не думаю что это будет красивее. Должно быть что то такое:




public function __get($name){

    if ($name != 'shedules')

        return parent::__get($name);

    else {

        $schedules = parent::__get($name);

        return (!empty($schedules))?unserialize($schedules):[];

    }

}



Ну и с __set() что то похожее.