PHP:如何从基础对象中的方法访问子属性?

时间:2010-05-22 08:22:24

标签: php json class object oop

我希望我的所有对象都能够返回自己的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引用子项的属性,而不是父项?

1 个答案:

答案 0 :(得分:4)

您可以使用get_object_vars()访问所有成员变量:

foreach (get_object_vars($this) as $name => $value) ...