Méthode __wakeup

La méthode __wakeup est une méthode magique en PHP, qui est appelée automatiquement lors de la désérialisation d'un objet. Elle permet de restaurer les ressources de l'objet ou d'effectuer des actions supplémentaires après la désérialisation.

Syntaxe

phppublic function __wakeup(): void
{
  // code
}

Exemple

Exemple de classe avec la méthode __wakeup, qui restaure la connexion à la base de données :

php<?php
  class DatabaseConnection
  {
    private $connection;
    
    public function __construct()
    {
      $this->connect();
    }
    
    private function connect()
    {
      $this->connection = 'db_connected';
    }
    
    public function __sleep()
    {
      return [];
    }
    
    public function __wakeup()
    {
      $this->connect();
    }
  }
  
  $db = new DatabaseConnection();
  $serialized = serialize($db);
  $unserialized = unserialize($serialized);
?>

Exemple

Exemple de restauration de fichiers temporaires après désérialisation :

php<?php
  class TempFileHandler
  {
    private $tempFiles = [];
    
    public function addTempFile($file)
    {
      $this->tempFiles[] = $file;
    }
    
    public function __wakeup()
    {
      foreach ($this->tempFiles as $file) {
        if (file_exists($file)) {
          unlink($file);
        }
      }
      $this->tempFiles = [];
    }
  }
  
  $handler = new TempFileHandler();
  $handler->addTempFile('temp1.txt');
  $serialized = serialize($handler);
  $unserialized = unserialize($serialized);
?>

Voir aussi

  • méthode __sleep,
    qui est appelée avant la sérialisation de l'objet
  • méthode __construct,
    qui est appelée lors de la création de l'objet