__sleep
and __wakeup
are methods that are related to the serialization process. serialize
function
checks if a class has a __sleep
method. If so, it will be executed before any serialization.
__sleep
is supposed to return an array of the names of all variables of an object that should be
serialized.
__wakeup
in turn will be executed by unserialize
if it is present in class. It's intention is to re-establish
resources and other things that are needed to be initialized upon unserialization.
class Sleepy {
public $tableName;
public $tableFields;
public $dbConnection;
/**
* This magic method will be invoked by serialize function.
* Note that $dbConnection is excluded.
*/
public function __sleep()
{
// Only $this->tableName and $this->tableFields will be serialized.
return ['tableName', 'tableFields'];
}
/**
* This magic method will be called by unserialize function.
*
* For sake of example, lets assume that $this->c, which was not serialized,
* is some kind of a database connection. So on wake up it will get reconnected.
*/
public function __wakeup()
{
// Connect to some default database and store handler/wrapper returned into
// $this->dbConnection
$this->dbConnection = DB::connect();
}
}