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