给出两个类:
class A
{
private $prop1;
}
class B extends A
{
private $prop2;
public function __sleep()
{
return array('prop1','prop2');
}
}
这只会序列化prop2
的值,因为它是B类的直接属性。
如何从超类A输出继承的prop1
?
修改
未定义__sleep()将在序列化字符串中显示private
属性,而不将其设置为protected
。它们看起来像�A�prop1
,只有我无法得到 是什么。
答案 0 :(得分:10)
显式调用父类的函数并附加结果:
class A
{
private $prop1;
public function __sleep()
{
return array('prop1');
}
}
class B extends A
{
private $prop2;
public function __sleep()
{
$arr = parent::__sleep();
array_push( $arr, 'prop2' );
return $arr;
}
}
答案 1 :(得分:2)
答案 2 :(得分:0)
子类中的任何代码都不会看到私有成员。您需要protected
。