# La interfaz Serializable

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

## Introducción

Interfaz que permite personalizar la serialización.

Las clases que implementan esta interfaz ya no soportan __sleep() y __wakeup(). El método de serialización es llamado cada vez que una instancia debe ser serializada. No llama al método __destruct() y no tiene ningún efecto sobre el contenido de este método. Cuando los datos son serializados, la clase es conocida y el método unserialize() apropiado es llamado como constructor en lugar de llamar a __construct(). Si es necesario llamar al constructor estándar, se puede hacer en el método.

Advertencia

A partir de PHP 8.1.0, una clase que implemente Serializable sin también implementar __serialize() y __unserialize() generará una advertencia de deprecación.

## Sinopsis de la Interfaz

interface Serializable {
/* Métodos */
public function serialize(): ?string
public function unserialize(string `$data`): void
}

## Ejemplos

Ejemplo #1 Ejemplo simple

    <?php
    class obj implements Serializable {
        private $data;
        public function __construct() {
            $this->data = "Mis datos privados";
        }
        public function serialize() {
            return serialize($this->data);
        }
        public function unserialize($data) {
            $this->data = unserialize($data);
        }
        public function getData() {
            return $this->data;
        }
    }

    $obj = new obj;
    $ser = serialize($obj);

    var_dump($ser);

    $newobj = unserialize($ser);

    var_dump($newobj->getData());
    ?>

Resultado del ejemplo anterior es similar a:

    Deprecated: obj implements the Serializable interface, which is deprecated. Implement __serialize() and __unserialize() instead (or in addition, if support for old PHP versions is necessary) in script on line 2
    string(38) "C:3:"obj":23:{s:19:"Mis datos privados";}"
    string(19) "Mis datos privados"

## Tabla de contenidos

- Serializable::serialize — Representación en formato cadena de un objeto
- Serializable::unserialize — Construye el objeto

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open