Php 获取抽象类中的对象变量
我有一个抽象类,它实现了Php 获取抽象类中的对象变量,php,reflection,abstract-class,json,Php,Reflection,Abstract Class,Json,我有一个抽象类,它实现了JsonSerializable接口 第1版: abstract class MyBase implements JsonSerializable { public function jsonSerialize() { var_dump(get_object_vars($this)); // ... } } class MyClass extends MyBase { private $id; pr
JsonSerializable
接口
第1版:
abstract class MyBase implements JsonSerializable
{
public function jsonSerialize()
{
var_dump(get_object_vars($this));
// ...
}
}
class MyClass extends MyBase
{
private $id;
private $name;
}
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\u encode(new MyClass())
返回一个空数组:
数组(0){}
第2版:
abstract class MyBase implements JsonSerializable
{
public function jsonSerialize()
{
var_dump(get_object_vars($this));
// ...
}
}
class MyClass extends MyBase
{
private $id;
private $name;
}
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\u encode(new MyClass())
返回如下数组:
数组(12){[“id”]=>int(1)[“name”]=>string(1)“name”}
为什么我的解决方案1不能像我的解决方案2那样工作?因为属性是私有的
var_dump(get_object_vars($this))
将获取可从该上下文访问的属性
只能从中定义私有成员的类访问私有成员