示例#1
0
 /**
  * parses all given files for classes and interfaces that are defined or used in this
  * files.
  *
  * @param array $files
  */
 public function parseFilesForClassesAndInterfaces($files)
 {
     $parserFactory = new ParserFactory();
     $parser = $parserFactory->create(ParserFactory::PREFER_PHP7);
     $progressbar = new Progressbar($this->output, count($files));
     foreach ($files as $file) {
         $namespace = (string) new NamespaceString($this->namespaceVendor, $this->root, $file);
         $originalFileContent = $this->filesystem->getFile($file);
         try {
             $stmts = $parser->parse($originalFileContent);
             $firstStatement = $stmts[0];
             if ($firstStatement instanceof Namespace_) {
                 $namespaceOfFile = implode('\\', $firstStatement->name->parts);
                 if ($namespace !== $namespaceOfFile) {
                     $this->foundError = true;
                     $this->output->addError('Namespace does not match folder structure, got ' . $namespaceOfFile . ' expected ' . $namespace, $file, $firstStatement->getLine());
                 }
             }
         } catch (Error $e) {
             $this->foundError = true;
             $this->output->addError('Parse Error: ' . $e->getMessage(), $file, 1);
         }
         $fileContent = $this->cleanContent($originalFileContent);
         $this->parseDefinedEntities($file, $namespace, $fileContent, $originalFileContent);
         $this->parseUsedEntities($file, $namespace, $fileContent, $originalFileContent);
         $this->parseUseStatements($file, $namespace, $fileContent, $originalFileContent);
         $progressbar->step();
     }
 }