public function getSortedModuleNames(array $namesToSort = array())
{
if (count($namesToSort) > 0) {
$namesToSort = array_flip($namesToSort);
foreach ($namesToSort as $module => $_) {
if (!isset($this->moduleNames[$module])) {
throw new RuntimeException(sprintf('The module "%s" does not exist in the graph.', $module));
}
}
} else {
$namesToSort = $this->moduleNames;
}
$sorted = array();
// Do a topologic sort
// Start with any module and process until no more are left
while (false !== reset($namesToSort)) {
$this->sortModulesDFS(key($namesToSort), $namesToSort, $sorted);
}
return $sorted;
}