我有一堆序列化的对象并存储在我的数据库中。在这些对象的类定义中,我添加了一个新成员。当我反序列化对象时,是否会遇到错误,因为序列化对象没有包含该成员?
class foo {
public $alpha = NULL;
}
$myobject = new foo();
$myobject->foo = "This is my original object."
$saved_object = serialize($myobject);
db_save_myobject($saved_object);
我保存后,我改变了foo类......
class foo {
public $alpha = NULL;
public $bravo = NULL;
}
现在我想从我的数据库中获取
$myobject = db_get_myobject();
$ myobject现在是否有一个空的bravo成员?
答案 0 :(得分:1)
对于简单的类,它可以正常工作。
除非在序列化之前为$myobject->bravo = 123;
分配了类似内容,否则您将获得$ bravo = NULL。然后它会留下$ bravo = 123。
如果类或其中一个父类实现Serializable或在__sleep或__wakeup中做了一些时髦的事情,则可能会遇到麻烦。