PDOException:不能序列化或反序列化PDO实例


PDOException: You cannot serialize or unserialize PDO instances

我试图缓存我的用户对象在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:你不能序列化或反序列化PDO实例在/var/www/test/user .php第41行

$this->db很可能是PDO对象。PDO对象不能序列化。

删除__sleep()上的对象并将其添加回__wakeup()(这是您在后面的情况下已经做的):

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

不能序列化不能序列化的对象。但你试过了,所以你得到了例外。这基本上就是整个问题。只是不要让PHP序列化那些不能序列化的对象。