我有一个实现JsonSerializable
接口的抽象类。
版本1:
abstract class MyBase implements JsonSerializable
{
public function jsonSerialize()
{
var_dump(get_object_vars($this));
// ...
}
}
class MyClass extends MyBase
{
private $id;
private $name;
}
所以json_encode(new MyClass())
返回一个空数组:
array(0){}
第2版:
abstract class MyBase implements JsonSerializable
{
abstract public function jsonSerialize();
}
class MyClass extends MyBase
{
private $id;
private $name;
public function jsonSerialize()
{
var_dump(get_object_vars($this));
// ...
}
}
所以json_encode(new MyClass())
返回一个数组:
array(12){[“id”] => int(1)[“name”] => string(1)“name”}
为什么我的解决方案1不像我的解决方案2那样工作?
答案 0 :(得分:2)
因为属性是私有的!
var_dump(get_object_vars($this));
将从该上下文中访问您的属性。
私人成员只能从
中定义的类中访问