下面是我正在編寫的一個類的一部分,它應該關注序列化。 序列化函數工作正常,並生成一個正確的字符串。 問題出在反序列化($ data)函數中。 將正確的序列化字符串傳遞給反序列化函數中的反序列化。 不幸的是,$ scl對象不包含預期的數據。沒有通知或錯誤拋出。結果是$ scl-> printData()打印信息,但不打印類變量的內容。將來我想將反序列化的結果賦值給$ this。我錯過了什麼?沒有錯誤拋出,但PHP非序列化不成功
public function serialize() {
$serial = serialize($this);
$df = gzdeflate($serial);
$b64 = base64_encode($df);
$ue = urlencode($b64);
return($ue);
}
public function deserialize($data) {
$u64 = base64_decode($data);
$gf = gzinflate($u64);
$scl = unserialize($gf);
if(!$scl)
echo"Cannot unserialize<br>";
$scl->printData();
}
function __sleep() {
return($this);
}
function __wakeup() {
echo"Waking up";
}
public function printData() {
echo"Data: <br>
ID: {$this->ID} <br>
sID: {$this->sID}<br>
...
";
}
這工作得很好:) 我不能將反序列化的結果分配給$這現在是不可能的? – jallmer 2011-04-09 05:47:37
@jallmer,正確的,你永遠不能將任何*任何*直接指定給'$ this',僅限於屬性。另外,我在關於重要安全問題的問題中添加了最後一節。 – Charles 2011-04-09 05:53:27
謝謝,我創建了一個類似於「複製構造函數」的東西來解決問題。 現在,它的工作,我會處理安全問題。 – jallmer 2011-04-09 06:02:31