PDOException: вы не можете сериализовать или нестиализовать экземпляры PDO

Я попытался кэшировать свой объект User в PHP с помощью memcache, но при использовании PDO я получаю сообщение об ошибке. Я добавил функцию __sleep и __wakeup.

User.php

/** * @var PDO */ protected $db; public function __construct() { $this->db = getInstanceOf('db'); } public function __destruct() { } public function __sleep() { return array('db'); } public function __wakeup() { $this->db = getInstanceOf('db'); } 

getInstanceOf ('db') возвращает объект pdo

Возвращает следующую ошибку:

PDOException: вы не можете сериализовать или unserialize экземпляры PDO в /var/www/test/User.php в строке 41

Solutions Collecting From Web of "PDOException: вы не можете сериализовать или нестиализовать экземпляры PDO"

Вероятно, $this->db является объектом PDO. Объекты PDO не могут быть сериализованы.

Удалите этот объект на __sleep() и добавьте его обратно в __wakeup() (это то, что вы уже делаете в последнем случае):

 public function __sleep() { return array(); } 

Вы не можете сериализовать объекты, которые не могут быть сериализованы. Но вы пытались, поэтому вы получили исключение. Это в основном проблема. Просто не говорите PHP для сериализации объектов, которые не могут быть сериализованы.