/** * Build modules dependencies * * @param array $dependencies Key is the vertex and the value are the adjacent vertices(dependencies) of this vertex * @return array */ public function buildCircularDependencies($dependencies) { $this->init($dependencies); foreach (array_keys($this->dependencies) as $vertex) { $this->expandDependencies($vertex); } $circulars = $this->graph->findCycle(null, false); foreach ($circulars as $circular) { array_shift($circular); $this->buildCircular($circular); } return $this->divideByModules($this->circularDependencies); }