(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.
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.
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"