【发布时间】:2018-03-18 05:06:32
【问题描述】:
我有一个具有这种定义的类:
class AClass {
private $member;
}
我在不同的页面中序列化和反序列化这个类,它工作正常。
现在由于某些原因,我不得不将类定义更改为:
class AClass {
public $member;
}
现在在反序列化时,我得到一个空的 $member 值,而不是存储在序列化字符串中的值。
很难给出一个可行的例子,因为这需要两个执行周期,但可以这样合成:https://3v4l.org/eTp6j。
解决此问题的最佳方法是什么?我现在唯一想到的就是编辑序列化的字符串,这看起来像是一个草率的黑客攻击。
谢谢
【问题讨论】:
-
你能举个例子吗?
-
我认为这会很困难,因为它意味着两个执行周期。一个定义第一种类型的类,对序列化对象的成员具有私有访问级别,另一个执行定义第二种类型的类,对尝试反序列化的成员具有公共访问级别。
-
无论如何,像这样 - 3v4l.org/eTp6j
-
编辑序列化字符串可能看起来很草率,但不幸的是,这可能也是最好的方法。
-
也许在类定义中将属性可见性恢复为私有,以便反序列化再次工作,但提供魔术 __get()/__set() 方法使其可公开访问
标签: php oop object serialization