PDOException: no puede serializar o deserializar instancias de PDO

Traté de guardar en caché mi objeto User en PHP con Memcache, pero recibo un error al usar PDO. Agregué una función __sleep y __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’) devuelve un objeto pdo

Devuelve el siguiente error:

PDOException: no puede serializar ni deserializar instancias de PDO en /var/www/test/User.php en la línea 41

Es probable que $this->db sea ​​un objeto PDO. Los objetos PDO no se pueden serializar.

Elimine ese objeto en __sleep() y agréguelo nuevamente a __wakeup() (que es lo que ya hace en el caso posterior):

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

No puede serializar objetos que no se pueden serializar. Pero lo intentaste, así que obtuviste la excepción. Eso es básicamente todo el problema. Simplemente no le diga a PHP que serialice los objetos que no pueden ser serializados.