Methode __wakeup

De methode __wakeup is een magische methode in PHP, die automatisch wordt aangeroepen bij deserialisatie van een object. Het maakt het mogelijk om bronnen van het object te herstellen of aanvullende acties uit te voeren na deserialisatie.

Syntaxis

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

Voorbeeld

Voorbeeld van een klasse met de methode __wakeup, die de databaseverbinding herstelt:

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);
?>

Voorbeeld

Voorbeeld van het herstellen van tijdelijke bestanden na deserialisatie:

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);
?>

Zie ook

  • methode __sleep,
    die wordt aangeroepen vóór serialisatie van het object
  • methode __construct,
    die wordt aangeroepen bij het aanmaken van een object