我希望我的所有对象都能够返回自己的JSON字符串。
所以我使用AsJSON()方法为我要扩展的所有对象创建了一个基类:
class BaseObject { public function AsJSON() { $JSON=array(); foreach ($this as $key => $value) { if(is_null($value)) continue; $JSON[$key] = $value; } return json_encode($JSON); } }
然后扩展我的子类:
class Package extends BaseObject { ... }
所以在我的代码中,我希望这样做:
$Box = new Package; $Box->SetID('123'); $Box->SetName('12x8x6'); $Box->SetBoxX('12'); $Box->SetBoxY('8'); $Box->SetBoxZ('6'); echo $Box->AsJSON();
但它返回的JSON字符串只包含BaseClass的属性,而不是子属性。
如何修改我的AsJSON()函数,以便$ this引用子项的属性,而不是父项?
答案 0 :(得分:4)
您可以使用get_object_vars()
访问所有成员变量:
foreach (get_object_vars($this) as $name => $value) ...