protected function generateClassTreeLevel(Project $project, $level, array $namespaces, array $classes) { ++$level; $tree = array(); foreach ($namespaces as $namespace => $subnamespaces) { // classes if ($project->getConfig('simulate_namespaces')) { $cl = $project->getSimulatedNamespaceAllClasses($namespace); } else { $cl = $project->getNamespaceAllClasses($namespace); } // subnamespaces $ns = array(); foreach ($subnamespaces as $subnamespace) { $parts = explode('\\', $subnamespace); if (!isset($parts[$level - 1])) { continue; } $ns[implode('\\', array_slice($parts, 0, $level))][] = $subnamespace; } $parts = explode('\\', $namespace); $url = ''; if (!$project->getConfig('simulate_namespaces')) { $url = $parts[count($parts) - 1] && count($cl) ? $namespace : ''; } $short = $parts[count($parts) - 1] ? $parts[count($parts) - 1] : '[Global Namespace]'; $tree[] = array($short, $url, $this->generateClassTreeLevel($project, $level, $ns, $cl)); } foreach ($classes as $class) { if ($project->getConfig('simulate_namespaces')) { $parts = explode('_', $class->getShortName()); $short = array_pop($parts); } else { $short = $class->getShortName(); } $tree[] = array($short, $class, array()); } return $tree; }