6
Symfony 2中的serialize()
和deserialize()
方法應包含哪些屬性(以及爲什麼)?哪些屬性必須在Symfony 2用戶類中進行序列化/反序列化?
現在我的id
領域,它只是工作,但我想知道是什麼原因,什麼是在User
類的serialize()
目的。以避免此消息:
您不能從EntityUserProvider刷新不包含標識符的 的用戶。用戶對象必須使用由Doctrine映射的 自己的標識符進行序列化。
Class User implements AdvancedUserInterface, \Serializable
{
/**
* @return string
*/
public function serialize()
{
return serialize($this->id);
}
/**
* @param string $data
*/
public function unserialize($data)
{
$this->id = unserialize($data);
}
}
雖然沒有實現\Serializable
,並與所有屬性protected
,我越來越:
的Symfony \分量\安全\核心\認證\令牌\ UsernamePasswordToken ::連載() 絕返回一個字符串或NULL。
感謝您的幫助。但是,如果沒有序列化id(例如,只有用戶名),我會收到「您無法從EntityUserProvider刷新不包含標識符的用戶。」... – gremo 2012-07-18 07:54:42
好的。那就是具體的教義。在這種情況下,你應該序列化它。 – 2012-07-18 11:31:55
如果您不打算覆蓋刷新用戶對象的方式,您肯定需要id。關於此主題的SF2文檔中有幾句話:「id是需要序列化的最重要的值,因爲refreshUser()方法通過使用id在每個請求上重新加載用戶。實際上,這意味着User對象使用來自序列化對象的ID從每個請求的數據庫中重新加載,這確保了所有用戶的數據都是新鮮的。「 – 2014-06-08 22:37:45