Die __wakeup-metode

Die metode __wakeup is 'n magiese metode in PHP wat outomaties aangeroep word tydens die deserialisasie van 'n objek. Dit laat toe om die objek se hulpbronne te herstel of bykomende aksies uit te voer na deserialisasie.

Sintaksis

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

Voorbeeld

Voorbeeld van 'n klas met 'n __wakeup-metode wat 'n databasisverbinding herstel:

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 die herstel van tydelike lêers na deserialisasie:

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

Sien ook

  • die metode __sleep,
    wat voor serialisasie van 'n objek aangeroep word
  • die metode __construct,
    wat aangeroep word wanneer 'n objek geskep word