__wakeup ක්‍රමය

__wakeup ක්‍රමය PHP හි ඇති මායා ක්‍රමයක් වන අතර, එය වස්තුවක් අනුක්‍රමණය නොකිරීමේදී ස්වයංක්‍රීයව ක්‍රියාත්මක වේ. එය වස්තුවේ සම්පත් ප්‍රතිස්ථාපනය කිරීමට හෝ අනුක්‍රමණය නොකිරීමෙන් පසු අතිරේක ක්‍රියා සිදු කිරීමට ඉඩ සලසයි.

වාක්‍ය රචනය

phppublic function __wakeup(): void
{
  // කේතය
}

උදාහරණය

__wakeup ක්‍රමය සහිත පංතියක උදාහරණයක්, එය දත්ත සමුදාය සමඟ සම්බන්ධතාවය ප්‍රතිස්ථාපනය කරයි:

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

උදාහරණය

අනුක්‍රමණය නොකිරීමෙන් පසු තාවකාලික ගොනු ප්‍රතිස්ථාපනය කිරීමේ උදාහරණය:

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

මෙයද බලන්න

  • __sleep ක්‍රමය,
    වස්තුව අනුක්‍රමණය කිරීමට පෙර ක්‍රියාත්මක වේ
  • __construct ක්‍රමය,
    වස්තුවක් නිර්මාණය කිරීමේදී ක්‍රියාත්මක වේ