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