Ваш код не за горами, у вас просто возникла проблема с тем, как вы собираете коллекцию A
объектов.
array_push($this->arr, (object) [
$this->current_index => $new_a
]);
Это создает структуру данных, которая Я уверен, что это не то, что вы ожидаете. В итоге вы получите массив, полный объектов stdClass, каждый из которых содержит один A
член и собственный внутренний индекс:
Array
(
[0] => stdClass Object
(
[0] => A Object
(
)
)
)
Затем вы получаете объект stdClass и пытаетесь запустить метод на этом, следовательно, вызов неопределенного метода stdClass :: do_something ... ошибка, которую вы видите.
Вместо этого все, что вам нужно сделать, это:
$this->arr[$this->current_index] = $new_a;
Остальная часть вашего кода просто ожидает массив A
объектов, ничего глубже не вложенных.
Я привел здесь полный пример: https://3v4l.org/ijvQa. Ваш существующий код имел несколько других опечаток, которые также исправлены. Вы легко заметите их, если включите отчеты об ошибках.