serialize() checks if your class has a function with
the magic name __sleep. If so, that function is
being run prior to any serialization. It can clean up the object
and is supposed to return an array with the names of all variables
of that object that should be serialized.
The intended use of __sleep is to close any
database connections that object may have, committing pending
data or perform similar cleanup tasks. Also, the function is
useful if you have very large objects which need not be
saved completely.
Conversely, unserialize() checks for the
presence of a function with the magic name
__wakeup. If present, this function can
reconstruct any resources that object may have.
The intended use of __wakeup is to
reestablish any database connections that may have been lost
during serialization and perform other reinitialization
tasks.