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

9
我尝试使用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');
}

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

返回以下错误:

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

1个回答

12

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

__sleep()中删除该对象,在__wakeup()中添加回来(这已经是你在后面情况下所做的):

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

您无法序列化无法序列化的对象。但您尝试了,所以您得到了异常。这基本上就是整个问题。只需不要告诉PHP序列化无法序列化的对象即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接