PHP: Как я могу получить доступ к дочерним свойствам из метода в базовом объекте? - PullRequest
1 голос
/ 22 мая 2010

Мне бы хотелось, чтобы все мои объекты могли возвращать свою строку 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 Ответ

4 голосов
/ 22 мая 2010

Вы можете получить доступ ко всем переменным-членам, используя get_object_vars():

foreach (get_object_vars($this) as $name => $value) ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...