diff -r bd595ad770fc -r 1c2f13fd785c web/enmi/Zend/Reflection/Function.php --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/web/enmi/Zend/Reflection/Function.php Thu Jan 20 19:30:54 2011 +0100 @@ -0,0 +1,129 @@ +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; + } +}