2012-01-02 97 views
8

我嘗試使用memcache將我的用戶對象緩存在PHP中,但在使用PDO時出現錯誤。我添加了__sleep和__wakeup函數。PDOException:您無法序列化或反序列化PDO實例

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: You cannot serialize or unserialize PDO instances in /var/www/test/User.php on line 41

回答

11

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

__sleep()刪除對象,並將其添加回__wakeup()(這是你在後一種情況下已經這樣做了):

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

您不能序列不能被序列化對象。但是你試過了,所以你有例外。這基本上是整個問題。只是不要告訴PHP來序列化無法序列化的對象。

+0

非常感謝你;)它完美的工作... – MaxiNet 2012-01-02 12:24:34

相關問題