Método __sleep

El método __sleep se llama automáticamente al serializar un objeto con la función serialize. Este método debe devolver un array con los nombres de las propiedades que deben incluirse en la representación serializada del objeto.

Sintaxis

phppublic function __sleep(): array;

Ejemplo

Creemos una clase e implementemos el método __sleep para serializar solo ciertas propiedades:

php<?php
class User {
  public $name = 'John';
  public $age = 30;
  private $password = '12345';
  
  public function __sleep() {
    return ['name', 'age'];
  }
}

$user = new User();
echo serialize($user);
?>

Resultado de ejecutar el código:

php'O:4:"User":2:{s:4:"name";s:4:"John";s:3:"age";i:30;}'

Ejemplo

Uso de __sleep para excluir datos confidenciales de la serialización:

php<?php
class Account {
  public $login = 'admin';
  private $password = 'secret';
  public $email = 'admin@example.com';
  
  public function __sleep() {
    return ['login', 'email'];
  }
}

$account = new Account();
echo serialize($account);
?>

Resultado de ejecutar el código:

php'O:7:"Account":2:{s:5:"login";s:5:"admin";s:5:"email";s:17:"admin@example.com";}'

Ver también

  • método __wakeup,
    que se llama al deserializar un objeto
  • función serialize,
    que serializa datos