ВНИМАНИЕ: Запись на курсы по HTML, CSS, JavaScript, PHP, Python, React, Vue, Laravel и другим фреймворкам и CMS,
а также: помощь в поиске работы и заказов, стажировка на реальных проектах→
356 of 410 menu
Вступайте в телеграмм-канал сайта code.mu: новинки, статьи, интервью, задачи, бесплатные курсы и тренинги. Жми для вступления:)

Метод __wakeup

Метод __wakeup является магическим методом в PHP, который автоматически вызывается при десериализации объекта. Он позволяет восстановить ресурсы объекта или выполнить дополнительные действия после десериализации.

Синтаксис

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

Пример

Пример класса с методом __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,
    который вызывается при создании объекта
byenru