serialize() revisa si la clase tiene una función con
el nombre mágico __sleep. Si es así, esa función es
ejecutada antes de cualquier serialización. Puede limpiar el objeto
y se supone que devuelva una matriz con los nombres de todas las variables
de ese objeto que deberán ser serializadas.
Si el método no devuelve nada, entonces NULL
es serializado y
E_NOTICE
es emitida.
La intención de utilizar __sleep es asentar datos pendientes o realizar tareas similares de limpieza. También la función es útil si se tienen objetos muy grandes que no necesitan ser guardados completamente.
De manera correspondiente, unserialize() revisa la presencia de una función con el nombre mágico de __wakeup. Si está presente, esta función puede reconstruir cualesquiera recursos que el objeto pueda tener.
El propósito de utilizar __wakeup es reestablecer cualquier conexión a bases de datos que se pudiese haber perdido durante la serialización y realizar otras tareas de reinicialización.