/** * @depends testConstructWithTagsOnly * @covers \Barryvdh\Reflection\DocBlock::getTagsByName * * @return void */ public function testGetTagsByNameMultipleMatch() { $fixture = <<<DOCBLOCK /** * @param string * @param int * @return void */ DOCBLOCK; $object = new DocBlock($fixture); $this->assertEmpty($object->getTagsByName('category')); $this->assertCount(1, $object->getTagsByName('return')); $this->assertCount(2, $object->getTagsByName('param')); }
protected function detectMethodsFromDoc(ReflectionClass $reflection) { $docBlock = new DocBlock($reflection); $methods = $docBlock->getTagsByName('method'); foreach ($methods as $method) { $this->methods[] = new MethodTag($method, $this->alias, $reflection, $method->getMethodName(), $this->interfaces); } }
/** * Normalize the return tag (make full namespace, replace interfaces) * * @param DocBlock $phpdoc */ protected function normalizeReturn(DocBlock $phpdoc) { //Get the return type and adjust them for beter autocomplete $returnTags = $phpdoc->getTagsByName('return'); if ($returnTags) { /** @var ReturnTag $tag */ $tag = reset($returnTags); // Get the expanded type $returnValue = $tag->getType(); // Replace the interfaces foreach ($this->interfaces as $interface => $real) { $returnValue = str_replace($interface, $real, $returnValue); } // Set the changed content $tag->setContent($returnValue . ' ' . $tag->getDescription()); $this->return = $returnValue; } else { $this->return = null; } }
/** * Get method return type based on it DocBlock comment * * @param \ReflectionMethod $reflection * * @return null|string */ protected function getReturnTypeFromDocBlock(\ReflectionMethod $reflection) { $type = null; $phpdoc = new DocBlock($reflection); if ($phpdoc->hasTag('return')) { $type = $phpdoc->getTagsByName('return')[0]->getContent(); } return $type; }