/** * {@inheritDoc} * * @return integer level of group in which it has been added */ protected function visit($element, &$parents = null) { $this->throwCircularExceptionIfNeeded($element, $parents); // If element has not been visited if (!$element->visited) { $parents[$element->id] = true; $element->visited = true; $minLevel = -1; foreach ($element->dependencies as $dependency) { if (isset($this->elements[$dependency])) { $newParents = $parents; $addedAtGroupLevel = $this->visit($this->elements[$dependency], $newParents, $element); if ($addedAtGroupLevel > $minLevel) { $minLevel = $addedAtGroupLevel; } } else { throw ElementNotFoundException::create($element->id, $dependency); } } // print "add {$element->id} ({$element->type}), minLevel:$minLevel \n"; // $this->printState(); $this->injectElement($element, $minLevel); return $minLevel; } return $element->addedAtLevel; }
protected function visit($element, &$parents = null) { $this->throwCircularExceptionIfNeeded($element, $parents); if (!$element->visited) { $parents[$element->id] = true; $element->visited = true; foreach ($element->dependencies as $dependency) { if (isset($this->elements[$dependency])) { $newParents = $parents; $this->visit($this->elements[$dependency], $newParents); } else { throw ElementNotFoundException::create($element->id, $dependency); } } $this->addToList($element); } }