(PHP 5 >= 5.1.0, PHP 7)
Interfaz para personalizar la serialización.
Las clases que implementan esta interfaz ya no admiten __sleep() ni __wakeup(). El método serialize se llama cuando una instancia requiere ser serializada. Esto no invoca a __destruct() ni tiene ningún efecto adicional a menos que se programe dentro del método. Cuando los datos son deserializados, la clase es conocida y se llama al correspondiente método unserialize() como constructor en lugar de llamar al método __construct(). Se puede ejecutar el constructor estándar en el método si fuera necesario.
Ejemplo #1 Uso básico
<?php
class obj implements Serializable {
    private $datos;
    public function __construct() {
        $this->datos = "Mis datos privados";
    }
    public function serialize() {
        return serialize($this->datos);
    }
    public function unserialize($datos) {
        $this->datos = unserialize($datos);
    }
    public function getDatos() {
        return $this->datos;
    }
}
$obj = new obj;
$ser = serialize($obj);
var_dump($ser);
$obj_nuevo = unserialize($ser);
var_dump($obj_nuevo->getDatos());
?>
El resultado del ejemplo sería algo similar a:
string(38) "C:3:"obj":23:{s:15:"Mis datos privados";}"
string(15) "Mis datos privados"