public function calculateDependencies($files, $_dependency = null)
{
/**
* Classes are ordered according to a dependency ranking
* Classes with higher rank, need to be initialized first
* We first build a dependency tree and then set the rank accordingly
*/
if ($_dependency == null) {
$dependencyTree = array();
foreach ($files as $file) {
if (!$file->isExternal()) {
$classDefinition = $file->getClassDefinition();
$dependencyTree[$classDefinition->getCompleteName()] = $classDefinition->getDependencies();
}
}
/* Make sure the dependencies are loaded first (recursively) */
foreach ($dependencyTree as $className => $dependencies) {
foreach ($dependencies as $dependency) {
$dependency->increaseDependencyRank(0);
$this->calculateDependencies($dependencyTree, $dependency);
}
}
return;
}
$dependencyTree = $files;
if (isset($dependencyTree[$_dependency->getCompleteName()])) {
foreach ($dependencyTree[$_dependency->getCompleteName()] as $dependency) {
$dependency->increaseDependencyRank(0);
$this->calculateDependencies($dependencyTree, $dependency);
}
}
}