/** * fromReflection() * * @param Zend_Reflection_Docblock_Tag $reflectionTagReturn * @return Zend_CodeGenerator_Php_Docblock_Tag_License */ public static function fromReflection(Zend_Reflection_Docblock_Tag $reflectionTagLicense) { $returnTag = new self(); $returnTag->setName('license'); $returnTag->setUrl($reflectionTagLicense->getUrl()); $returnTag->setDescription($reflectionTagLicense->getDescription()); return $returnTag; }
/** * fromReflection() * * @param Zend_Reflection_Docblock_Tag $reflectionTagReturn * @return Zend_CodeGenerator_Php_Docblock_Tag_Return */ public static function fromReflection(Zend_Reflection_Docblock_Tag $reflectionTagReturn) { $returnTag = new self(); $returnTag->setName('return'); $returnTag->setDatatype($reflectionTagReturn->getType()); // @todo rename $returnTag->setDescription($reflectionTagReturn->getDescription()); return $returnTag; }
/** * fromReflection() * * @param Zend_Reflection_Docblock_Tag $reflectionTagParam * @return Zend_CodeGenerator_Php_Docblock_Tag */ public static function fromReflection(Zend_Reflection_Docblock_Tag $reflectionTagParam) { $paramTag = new self(); $paramTag->setName('param'); $paramTag->setDatatype($reflectionTagParam->getType()); // @todo rename $paramTag->setParamName($reflectionTagParam->getVariableName()); $paramTag->setDescription($reflectionTagParam->getDescription()); return $paramTag; }
/** * fromReflection() * * @param Zend_Reflection_Docblock_Tag $reflectionTag * @return Zend_CodeGenerator_Php_Docblock_Tag */ public static function fromReflection(Zend_Reflection_Docblock_Tag $reflectionTag) { $tagName = $reflectionTag->getName(); $codeGenDocblockTag = self::factory($tagName); // transport any properties via accessors and mutators from reflection to codegen object $reflectionClass = new ReflectionClass($reflectionTag); foreach ($reflectionClass->getMethods(ReflectionMethod::IS_PUBLIC) as $method) { if (substr($method->getName(), 0, 3) == 'get') { $propertyName = substr($method->getName(), 3); if (method_exists($codeGenDocblockTag, 'set' . $propertyName)) { $codeGenDocblockTag->{'set' . $propertyName}($reflectionTag->{'get' . $propertyName}()); } } } return $codeGenDocblockTag; }
protected function _parse() { $docComment = $this->_docComment; // First remove doc block line starters $docComment = preg_replace('#[ \\t]*(?:\\/\\*\\*|\\*\\/|\\*)?[ ]{0,1}(.*)?#', '$1', $docComment); $docComment = ltrim($docComment, "\r\n"); // Next parse out the tags and descriptions $parsedDocComment = $docComment; $lineNumber = $firstBlandLineEncountered = 0; while (($newlinePos = strpos($parsedDocComment, "\n")) !== false) { $lineNumber++; $line = substr($parsedDocComment, 0, $newlinePos); if (strpos($line, '@') === 0 && preg_match('#^(@\\w+.*?)(\\n)(?:@|\\r?\\n|$)#s', $parsedDocComment, $matches)) { $this->_tags[] = Zend_Reflection_Docblock_Tag::factory($matches[1]); $parsedDocComment = str_replace($matches[1] . $matches[2], '', $parsedDocComment); } else { if ($lineNumber < 3 && !$firstBlandLineEncountered) { $this->_shortDescription .= $line . "\n"; } else { $this->_longDescription .= $line . "\n"; } if ($line == '') { $firstBlandLineEncountered = true; } $parsedDocComment = substr($parsedDocComment, $newlinePos + 1); } } $this->_shortDescription = rtrim($this->_shortDescription); $this->_longDescription = rtrim($this->_longDescription); }
/** * Get return type tag * * @return Zend_Reflection_Docblock_Tag_Return */ public function getReturn() { $docblock = $this->getDocblock(); if (!$docblock->hasTag('return')) { require_once PHP_LIBRARY_PATH . 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception('Function does not specify an @return annotation tag; cannot determine return type'); } $tag = $docblock->getTag('return'); $return = Zend_Reflection_Docblock_Tag::factory('@return ' . $tag->getDescription()); return $return; }