public function hasPath($moduleName, $dependency)
{
// does not exist in the graph
if (!isset($this->dependencies[$moduleName])) {
return false;
}
// adjacent node
if (isset($this->dependencies[$moduleName][$dependency])) {
return true;
}
// DFS
foreach ($this->dependencies[$moduleName] as $predecessor => $_) {
if ($this->hasPath($predecessor, $dependency)) {
return true;
}
}
return false;
}