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.