Phương thức __wakeup
Phương thức __wakeup là một phương thức ma thuật trong PHP,
tự động được gọi khi giải tuần tự hóa đối tượng.
Nó cho phép khôi phục tài nguyên của đối tượng hoặc thực hiện
các hành động bổ sung sau khi giải tuần tự hóa.
Cú pháp
public function __wakeup(): void
{
// code
}
Ví dụ
Ví dụ lớp có phương thức __wakeup,
khôi phục kết nối cơ sở dữ liệu:
<?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);
?>
Ví dụ
Ví dụ khôi phục các tập tin tạm thời sau khi giải tuần tự hóa:
<?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);
?>
Xem thêm
-
phương thức
__sleep,
được gọi trước khi tuần tự hóa đối tượng -
phương thức
__construct,
được gọi khi tạo đối tượng