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; }