/**
  * @param string $name
  * @param string $namespace
  * @return ReflectionFunction|NULL
  */
 public function getFunction($name, $namespace = '')
 {
     $parsedFunctions = $this->parserResult->getFunctions();
     $function = $this->findElementByNameAndNamespace($parsedFunctions, $name, $namespace);
     if ($function && $function->isDocumented()) {
         return $function;
     }
     return NULL;
 }
 public function generate()
 {
     $template = $this->templateFactory->createForType(TCO::TREE);
     $classes = $this->parserResult->getClasses();
     foreach ($classes as $className => $reflection) {
         if ($this->canBeProcessed($reflection)) {
             $this->addToTreeByReflection($reflection);
         }
     }
     $this->sortTreeStorageElements();
     $template->setParameters(['classTree' => new Tree($this->treeStorage[Elements::CLASSES], $classes), 'interfaceTree' => new Tree($this->treeStorage[Elements::INTERFACES], $classes), 'traitTree' => new Tree($this->treeStorage[Elements::TRAITS], $classes), 'exceptionTree' => new Tree($this->treeStorage[Elements::EXCEPTIONS], $classes)]);
     $template->save();
 }
 private function categorizeParsedElements()
 {
     foreach ($this->parserResult->getTypes() as $type) {
         $elements = $this->parserResult->getElementsByType($type);
         foreach ($elements as $elementName => $element) {
             if (!$element->isDocumented()) {
                 continue;
             }
             if ($element instanceof ReflectionConstant) {
                 $elementType = Elements::CONSTANTS;
                 $this->constants[$elementName] = $element;
             } elseif ($element instanceof ReflectionFunction) {
                 $elementType = Elements::FUNCTIONS;
                 $this->functions[$elementName] = $element;
             } elseif ($element->isInterface()) {
                 $elementType = Elements::INTERFACES;
                 $this->interfaces[$elementName] = $element;
             } elseif ($element->isTrait()) {
                 $elementType = Elements::TRAITS;
                 $this->traits[$elementName] = $element;
             } elseif ($element->isException()) {
                 $elementType = Elements::EXCEPTIONS;
                 $this->exceptions[$elementName] = $element;
             } else {
                 $elementType = Elements::CLASSES;
                 $this->classes[$elementName] = $element;
             }
             $this->categorizeElementToNamespaceAndPackage($elementName, $elementType, $element);
         }
     }
     $this->sortNamespacesAndPackages();
     $this->areElementsCategorized = TRUE;
     $this->addUsedByAnnotation();
 }
 private function scanAndParse(array $options)
 {
     $this->io->writeln('<info>Scanning sources and parsing</info>');
     $files = $this->scanner->scan($options[CO::SOURCE], $options[CO::EXCLUDE], $options[CO::EXTENSIONS]);
     $this->parser->parse($files);
     $this->reportParserErrors($this->parser->getErrors());
     $stats = $this->parserResult->getDocumentedStats();
     $this->io->writeln(sprintf('Found <comment>%d classes</comment>, <comment>%d constants</comment> and <comment>%d functions</comment>', $stats['classes'], $stats['constants'], $stats['functions']));
 }
Ejemplo n.º 5
0
 private function loadToParserResult(ArrayObject $classes, ArrayObject $constants, ArrayObject $functions, ArrayObject $internalClasses, ArrayObject $tokenizedClasses)
 {
     $this->parserResult->setClasses($classes);
     $this->parserResult->setConstants($constants);
     $this->parserResult->setFunctions($functions);
     $this->parserResult->setInternalClasses($internalClasses);
     $this->parserResult->setTokenizedClasses($tokenizedClasses);
 }
 /**
  * @return ArrayObject|ReflectionClass[]
  */
 public function getParsedClasses()
 {
     return $this->parserResult->getElementsByType(Elements::CLASSES);
 }