下面是我正在编写的一个类的一部分,它应该关注序列化。 序列化函数工作正常,并生成一个正确的字符串。 问题出在反序列化($ 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