Вы не делаете ничего плохого;у вас есть родитель, у которого есть ссылка на своих потомков, и у каждого ребенка есть ссылка на своего родителя.Когда вы var_dump()
корневой объект, он перебирает дочерние элементы, чтобы напечатать их, и, поскольку каждый дочерний элемент имеет ссылку на родительский объект, он возвращается обратно.Поскольку это обычно вызывает бесконечный цикл (parent -> child -> parent -> child -> ...), PHP хранит список объектов, которые он уже посетил, и когда он встречает один, он не пытается сброситьон снова, но вместо этого печатает «RECURSION».
Единственное, на что следует обратить внимание, это то, что PHP использует подсчет ссылок для своей сборки мусора, и подобные циклические конструкции не разрешаются сами по себе.В результате у вашего скрипта будет утечка памяти, что может быть или не быть проблемой.Чтобы решить эту проблему, вам нужно выполнить очистку вручную: непосредственно перед тем, как родительский объект выйдет из области видимости, вам нужно установить все родительские указатели на null.
См. Также: http://bugs.php.net/bug.php?id=33595