Не уверен, что процесс для сериализации дочернего класса, который реализует Serializable
интерфейс, родительский класс больше не сохраняет данные, которые он когда-то сериализовал. Есть ли шаг, который я пропускаю?
class A {
private $aVar = "test";
}
class B extends A implements Serializable {
private static $bVar = "tset";
public function serialize() {
return serialize(self::$bVar);
}
public function unserialize($serialized) {
self::$bVar = unserialize($serialized);
}
}
$s = serialize(new B());
$u = unserialize($s);
Я думаю, вы немного озадачены тем, что здесь происходит, но, по сути, вы видите неправильно распределенные переменные.
Если бы вы должны были сделать $aVar
в Class A
защищенный или публичный, вы сможете получить к нему доступ в Class B
:
Вы получите следующее:
B Object
(
[bVar:B:private] => tset
[aVar] => test
)
Других решений пока нет …