PDOException: Vous ne pouvez pas sérialiser ou unserialize AOP instances
J'ai essayé de cache de mon objet Utilisateur en PHP avec memcache, mais j'obtiens une erreur lors de l'utilisation de PDO. J'ai ajouté un __sleep et __wakeup fonction.
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') retourne un objet pdo...
Renvoie l'erreur suivante:
PDOException: Vous ne pouvez pas sérialiser ou unserialize AOP instances /var/www/test/User.php sur la ligne 41
OriginalL'auteur MaxiNet | 2012-01-02
Vous devez vous connecter pour publier un commentaire.
Il est probable que
$this->db
est un objet PDO. AOP objets ne peut pas être sérialisé.Supprimer cet objet sur
__sleep()
et l'ajouter à__wakeup()
(qui est ce que vous faites déjà dans le cas d'une version ultérieure):Vous ne pouvez pas sérialiser des objets qui ne peuvent pas être sérialisé. Mais vous avez essayé, si vous avez l'exception. C'est en fait l'ensemble de la question. Il suffit de ne pas indiquer à PHP pour sérialiser des objets qui ne peuvent pas être sérialisé.
OriginalL'auteur hakre