Ejemplo n.º 1
0
 public function sort($dependents)
 {
     $topologicalSort = new StringSort();
     // build graph for topological sort
     foreach ($dependents as $name => $dependent) {
         $topologicalSort->add($name, $dependent instanceof Dependent ? $dependent->depends() : []);
     }
     // sort graph
     $sortedList = $topologicalSort->sort();
     $sortedComponents = [];
     //translate sort graph
     foreach ($sortedList as $name) {
         $sortedComponents[$name] = $dependents[$name];
     }
     return $sortedComponents;
 }
Ejemplo n.º 2
0
 /**
  * Sort topological and resolve dependencies
  *
  * @param $components
  * @return array|\string[]
  */
 private function sort($components)
 {
     $topologicalSort = new StringSort();
     // build graph for topological sort
     foreach ($components as $name => $component) {
         /** @var Component $component */
         $topologicalSort->add($name, $component->depends());
     }
     // sort graph
     $sortedList = $topologicalSort->sort();
     $sortedComponents = [];
     //translate sort graph
     foreach ($sortedList as $name) {
         $sortedComponents[$name] = $components[$name];
     }
     return $sortedComponents;
 }