Пример #1
0
 /**
  * @param State  $state
  * @param Logger $logger
  *
  * @throws \RuntimeException
  */
 public function run(State $state, Logger $logger)
 {
     $codeParser = new CodeParser();
     $cacheDir = $state->config->getCacheDir();
     $cacheNote = $cacheDir ? 'cache at ' . $cacheDir : 'cache disabled';
     $logger->log(0, sprintf('parse class dirs (%s)', $cacheNote));
     $classes = $codeParser->parse($state->config->getClassDirs(), $state->config->getCacheDir());
     if ($logger->hasDepth(1)) {
         foreach ($classes as $class) {
             $logger->log(1, sprintf('found class <cyan>%s<reset> in %s', $class->name, $class->fileName));
         }
     }
     $state->classes = $classes;
 }
Пример #2
0
 public function testParser()
 {
     $parser = new CodeParser();
     $refs = $parser->parse([__DIR__ . '/samples']);
     self::assertCount(6, $refs);
     self::assertArrayHasKey('Simple', $refs);
     self::assertArrayHasKey('CodeDocs\\Integration\\Base', $refs);
     self::assertArrayHasKey('CodeDocs\\Integration\\InterFirst', $refs);
     self::assertArrayHasKey('CodeDocs\\Integration\\InterSecond', $refs);
     self::assertArrayHasKey('CodeDocs\\Integration\\Complex', $refs);
     self::assertArrayHasKey('CodeDocs\\Integration\\SomeTrait', $refs);
     $this->checkSimple($refs['Simple']);
     $ref = $refs['CodeDocs\\Integration\\Base'];
     self::assertEquals(['CodeDocs\\Integration\\SomeTrait'], $ref->traits);
     self::assertTrue($ref->isAbstract);
     self::assertSame(6, $ref->startLine);
     self::assertSame(9, $ref->endLine);
     $ref = $refs['CodeDocs\\Integration\\InterFirst'];
     self::assertTrue($ref->isInterface);
     self::assertSame(11, $ref->startLine);
     self::assertSame(14, $ref->endLine);
     $ref = $refs['CodeDocs\\Integration\\InterSecond'];
     self::assertTrue($ref->isInterface);
     self::assertEquals(['NotExists\\AnotherInterface'], $ref->implements);
     self::assertSame(16, $ref->startLine);
     self::assertSame(19, $ref->endLine);
     $ref = $refs['CodeDocs\\Integration\\Complex'];
     self::assertFalse($ref->isInterface);
     self::assertTrue($ref->isFinal);
     self::assertEquals(['CodeDocs\\Integration\\InterFirst', 'CodeDocs\\Integration\\InterSecond'], $ref->implements);
     self::assertEquals('CodeDocs\\Integration\\Base', $ref->extends);
     self::assertSame(21, $ref->startLine);
     self::assertSame(24, $ref->endLine);
     $ref = $refs['CodeDocs\\Integration\\SomeTrait'];
     self::assertTrue($ref->isTrait);
     self::assertSame(26, $ref->startLine);
     self::assertSame(28, $ref->endLine);
 }