serialize() проверяет, имеется ли в вашем
классе функция с "магическим" именем __sleep. Если да, эта функция запускается
до выполнения любой сериализации. Она может
зачистить объект, и предполагается, что она возвращает массив имён всех
переменных этого объекта, которые должны быть сериализованы.
Назначение функции __sleep - закрыть любые соединения с БД, которые может иметь объект, подтверждая
отправку данных или выполняя аналогичные задачи очистки. Также эта функция
используется, если у вас имеются очень большие объекты, которые не нужно сохранять целиком.
И наоборот, unserialize() проверяет наличие
функции с "магическим" именем __wakeup. Если да, эта функция может
реконструировать любой ресурс, имеющийся у объекта.
Назначение функции __wakeup - восстановить любые соединения с БД, которые могли быть потеряны в процессе
сериализации, и выполнить другие задачи реинициализации.