Esempio n. 1
0
 /**
  * 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;
 }