PHP手册中写道:
它可以清理对象并且应该返回一个包含该对象中所有需要序列化的变量名称的数组。
我的理解是,如果我有一个类,像这样:
<?php
class Foo {
public $bar = 'bar';
public $baz = 'baz';
public function __sleep() {
return array('bar');
}
}
$obj = new Foo();
$serialized = serialize($obj);
$unserialized = unserialize($serialized);
var_dump($unserialized);
?>
它只会序列化对象和属性$bar吗?就像这样:
object(Foo)[2]
public 'bar' => string 'bar' (length=3)
但是它返回:
object(Foo)[2]
public 'bar' => string 'bar' (length=3)
public 'baz' => string 'baz' (length=3)
我是否理解错误?还是我的做法有误?
unserialize
不会调用构造函数,你的baz
可能会保持未初始化状态。 - Niki Romagnoli