/** * @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'])); }
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); }