コード例 #1
0
 /**
  * {@inheritDoc}
  */
 public function openBuffer(File $file)
 {
     if (!isset($this->builders[$file->getRelativePath()])) {
         $this->builders[$file->getRelativePath()] = new PatchBuilder($file->getCode(), $file->getRelativePath());
     }
     return new PatchBuffer($this->builders[$file->getRelativePath()]);
 }
コード例 #2
0
 public function findNames(File $file)
 {
     $parser = new PHPParser_Parser(new PHPParser_Lexer());
     $collector = new PhpNameCollector();
     $traverser = new PHPParser_NodeTraverser();
     try {
         $stmts = $parser->parse($file->getCode());
     } catch (PHPParser_Error $e) {
         throw new \RuntimeException("Error parsing " . $file->getRelativePath() . ": " . $e->getMessage(), 0, $e);
     }
     $traverser->addVisitor($collector);
     $traverser->traverse($stmts);
     return array_map(function ($use) use($file) {
         $type = constant('QafooLabs\\Refactoring\\Domain\\Model\\PhpName::TYPE_' . strtoupper($use['type']));
         return new PhpNameOccurance(new PhpName($use['fqcn'], $use['alias'], $type), $file, $use['line']);
     }, $collector->collectedNameDeclarations());
 }