getDocComment())) { require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception($this->getName() . ' does not have a docblock'); } $instance = new $reflectionClass($comment); if (!$instance instanceof Zend_Reflection_Docblock) { require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception('Invalid reflection class provided; must extend Zend_Reflection_Docblock'); } return $instance; } /** * Get start line (position) of function * * @param bool $includeDocComment * @return int */ public function getStartLine($includeDocComment = false) { if ($includeDocComment) { if ($this->getDocComment() != '') { return $this->getDocblock()->getStartLine(); } } return parent::getStartLine(); } /** * Get contents of function * * @param bool $includeDocblock * @return string */ public function getContents($includeDocblock = true) { return implode("\n", array_splice( file($this->getFileName()), $this->getStartLine($includeDocblock), ($this->getEndLine() - $this->getStartLine()), true ) ); } /** * Get function parameters * * @param string $reflectionClass Name of reflection class to use * @return array Array of Zend_Reflection_Parameter */ public function getParameters($reflectionClass = 'Zend_Reflection_Parameter') { $phpReflections = parent::getParameters(); $zendReflections = array(); while ($phpReflections && ($phpReflection = array_shift($phpReflections))) { $instance = new $reflectionClass($this->getName(), $phpReflection->getName()); if (!$instance instanceof Zend_Reflection_Parameter) { require_once 'Zend/Reflection/Exception.php'; throw new Zend_Reflection_Exception('Invalid reflection class provided; must extend Zend_Reflection_Parameter'); } $zendReflections[] = $instance; unset($phpReflection); } unset($phpReflections); return $zendReflections; } /** * Get return type tag * * @return Zend_Reflection_Docblock_Tag_Return */ public function getReturn() { $docblock = $this->getDocblock(); if (!$docblock->hasTag('return')) { require_once '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; } }