PDOException:您无法序列化或反序列化PDO实例

Max*_*Net 8 php serialization memcached pdo

我尝试使用memcache在PHP中缓存我的User对象,但是在使用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');
}
Run Code Online (Sandbox Code Playgroud)

getInstanceOf('db')返回一个pdo对象......

返回以下错误:

PDOException:您无法在第41行的/var/www/test/User.php中序列化或反序列化PDO实例

hak*_*kre 12

它很可能$this->db是一个PDO对象.PDO对象无法序列化.

删除该对象__sleep()并将其添加回__wakeup()(这是您在以后的情况下已经执行的操作):

public function __sleep()
{
    return array();
}
Run Code Online (Sandbox Code Playgroud)

您无法序列化无法序列化的对象.但你试过了,所以你得到了例外.这基本上就是整个问题.只是不要告诉PHP序列化无法序列化的对象.