/** * 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(); } }