Interfaces y clases predefinidas
PHP Manual

La interfaz Serializable

(PHP 5 >= 5.1.0, PHP 7)

Introducción

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.

Observe que cuando una antigua instancia de una clase que implemente ahora esta interfaz, la cual haya sido serializada antes de que la clase haya implementado la interfaz, es deserializada y se llama a __wakeup() en lugar de al método serialize, lo que podría ser útil para migraciones.

Sinopsis de la Interfaz

Serializable {
/* Métodos */
abstract public string serialize ( void )
abstract public void unserialize ( string $serialized )
}

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"

Tabla de contenidos


Interfaces y clases predefinidas
PHP Manual