Вложенный объект ArrayObject с ARRAY_AS_PROPS

Я играю с ArrayObject уже несколько дней, но есть хитрость, которую я не могу сделать.

Что я хочу сделать :

MyClass extends ArrayObject {
public function __construct($input = []) {
parent::__construct($input, self::ARRAY_AS_PROPS);
}
}

$a = new MyClass();
$a->foo = 'bar';
var_dump($a->getArrayCopy()); // there should be only one key : "foo"$a->bar->baz = 'foo';
var_dump($a->getArrayCopy()); // there should be only two keys : "foo", "bar"echo get_class($a->bar) . "\n"; // should be MyClass

Но $ a-> bar — это класс stdClass, и у меня есть хорошее предупреждение в бонусе

Если я отключу флаг ARRAY_AS_PROPS и переопределю методы __get и __set, я близок:

function __get($key) {
if (! $this->offsetExists($key)) {
$this->offsetSet($key, new self);
}
return $this->offsetGet($key)
}

Но тогда у меня есть эта проблема:

$a = new MyClass();
$a->foo = 'bar';
var_dump($a->getArrayCopy()); // there is one key ("foo") which is correct

// but when I do anything with the key without affecting some data
isset($a->bar);
var_dump($a->getArrayCopy()); // Now I also have the key "bar" which is not correct

Любое предложение ?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector