__wakeup ක්රමය
__wakeup ක්රමය PHP හි ඇති මායා ක්රමයක් වන අතර,
එය වස්තුවක් අනුක්රමණය නොකිරීමේදී ස්වයංක්රීයව ක්රියාත්මක වේ.
එය වස්තුවේ සම්පත් ප්රතිස්ථාපනය කිරීමට හෝ අනුක්රමණය නොකිරීමෙන් පසු
අතිරේක ක්රියා සිදු කිරීමට ඉඩ සලසයි.
වාක්ය රචනය
public function __wakeup(): void
{
// කේතය
}
උදාහරණය
__wakeup ක්රමය සහිත පංතියක උදාහරණයක්, එය
දත්ත සමුදාය සමඟ සම්බන්ධතාවය ප්රතිස්ථාපනය කරයි:
<?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
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ක්රමය,
වස්තුවක් නිර්මාණය කිරීමේදී ක්රියාත්මක වේ