我有一个实现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())
返回一个空数组:
数组(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())
返回一个数组,如:
数组(12) { ["id"]=> int(1) ["name"]=> string(1) "name" }
为什么我的解决方案 1 不像我的解决方案 2 那样工作?