protected function detectLoop($parent, $child) { if ($child->name === $parent->name) { return true; } foreach ($this->getChildren($child->name) as $grandchild) { if ($this->detectLoop($parent, $grandchild)) { return true; } } return false; }