/** * Parse PHP files and return plain array with the class descriptors * * @return array */ protected static function getClassesTreeIndex() { $index = array(); // Iterate over all directories with PHP class files foreach (static::getClassFileIterator()->getIterator() as $path => $data) { // Use PHP Tokenizer to search class declaration if (($class = \Includes\Decorator\Utils\Tokenizer::getFullClassName($path)) && \Includes\Utils\Operator::checkIfLCClass($class)) { // File contains a class declaration: create node (descriptor) $node = new \Includes\Decorator\DataStructure\Graph\Classes($class); // Check parent class (so called optional dependencies for modules) $dependencies = $node->getTag('lc_dependencies', true); if (empty($dependencies) || \Includes\Utils\ModulesManager::areActiveModules($dependencies)) { // Node is valid: add to the index $index[$class] = $node; } else { // The unused class file must be removed from the cache file structure \Includes\Utils\FileManager::deleteFile($node->getFile()); } } } return $index; }