serialize() verifica se sua classe possui um método com
o nome mágico __sleep. Se houver, ele será
executado antes de qualquer serialização. Ele pode ser utilizado para fazer uma
limpeza no objeto, e é esperado que retorne um array com os nomes de todos as variáveis
deste objeto que devem ser serializados.
Caso o método não retorne nada, NULL
será serializado e um
E_NOTICE
será lançado.
O objetivo de uso do __sleep é confirmar dados pendentes ou realizar tarefas de limpezas. A função é também útil quando você está lidando com objetos muito grandes e que não precisam ser completamente salvos.
No caso inverso, unserialize() verifica a presença de um método com o nome mágico __wakeup. Caso exista, será chamado e poderá reconstruir qualquer recurso que este objeto pode ter.
A inteção de utilização do __wakeup é reestabelecer quaisquer conexões com banco de dados que podem ter sido perdidas durante a serialização e realizar outras tarefas de reinicialização.