/** * 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::getClassesDirFiles() as $data) { // Use PHP Tokenizer to search class declaration if (($class = \Includes\Decorator\Utils\Tokenizer::getFullClassName($data->getPathname())) && \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); $positiveDependencies = static::getPositiveDependencies($dependencies); $negativeDependencies = static::getNegativeDependencies($dependencies); if (empty($dependencies) || \Includes\Utils\ModulesManager::areActiveModules($positiveDependencies) && \Includes\Utils\ModulesManager::areInactiveModules($negativeDependencies)) { // 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; }