- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\Code\Reflection;
-
- use ReflectionMethod as PhpReflectionMethod;
- use Zend\Code\Annotation\AnnotationManager;
- use Zend\Code\Scanner\AnnotationScanner;
- use Zend\Code\Scanner\CachingFileScanner;
-
- class MethodReflection extends PhpReflectionMethod implements ReflectionInterface
- {
- /**
- * @var AnnotationScanner
- */
- protected $annotations = null;
-
- /**
- * Retrieve method DocBlock reflection
- *
- * @return DocBlockReflection|false
- */
- public function getDocBlock()
- {
- if ('' == $this->getDocComment()) {
- return false;
- }
-
- $instance = new DocBlockReflection($this);
-
- return $instance;
- }
-
- /**
- * @param AnnotationManager $annotationManager
- * @return AnnotationScanner
- */
- public function getAnnotations(AnnotationManager $annotationManager)
- {
- if (($docComment = $this->getDocComment()) == '') {
- return false;
- }
-
- if ($this->annotations) {
- return $this->annotations;
- }
-
- $cachingFileScanner = $this->createFileScanner($this->getFileName());
- $nameInformation = $cachingFileScanner->getClassNameInformation($this->getDeclaringClass()->getName());
-
- if (!$nameInformation) {
- return false;
- }
-
- $this->annotations = new AnnotationScanner($annotationManager, $docComment, $nameInformation);
-
- return $this->annotations;
- }
-
- /**
- * Get start line (position) of method
- *
- * @param bool $includeDocComment
- * @return int
- */
- public function getStartLine($includeDocComment = false)
- {
- if ($includeDocComment) {
- if ($this->getDocComment() != '') {
- return $this->getDocBlock()->getStartLine();
- }
- }
-
- return parent::getStartLine();
- }
-
- /**
- * Get reflection of declaring class
- *
- * @return ClassReflection
- */
- public function getDeclaringClass()
- {
- $phpReflection = parent::getDeclaringClass();
- $zendReflection = new ClassReflection($phpReflection->getName());
- unset($phpReflection);
-
- return $zendReflection;
- }
-
- /**
- * Get all method parameter reflection objects
- *
- * @return ParameterReflection[]
- */
- public function getParameters()
- {
- $phpReflections = parent::getParameters();
- $zendReflections = array();
- while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
- $instance = new ParameterReflection(array(
- $this->getDeclaringClass()->getName(),
- $this->getName()),
- $phpReflection->getName()
- );
- $zendReflections[] = $instance;
- unset($phpReflection);
- }
- unset($phpReflections);
-
- return $zendReflections;
- }
-
- /**
- * Get method contents
- *
- * @param bool $includeDocBlock
- * @return string
- */
- public function getContents($includeDocBlock = true)
- {
- $fileName = $this->getFileName();
-
- if ((class_exists($this->class) && !$fileName) || ! file_exists($fileName)) {
- return ''; // probably from eval'd code, return empty
- }
-
- $fileContents = file($fileName);
- $startNum = $this->getStartLine($includeDocBlock);
- $endNum = ($this->getEndLine() - $this->getStartLine());
-
- return implode("\n", array_splice($fileContents, $startNum, $endNum, true));
- }
-
- /**
- * Get method body
- *
- * @return string
- */
- public function getBody()
- {
- $fileName = $this->getDeclaringClass()->getFileName();
-
- if (false === $fileName || ! file_exists($fileName)) {
- return '';
- }
-
- $lines = array_slice(
- file($fileName, FILE_IGNORE_NEW_LINES),
- $this->getStartLine(),
- ($this->getEndLine() - $this->getStartLine()),
- true
- );
-
- $firstLine = array_shift($lines);
-
- if (trim($firstLine) !== '{') {
- array_unshift($lines, $firstLine);
- }
-
- $lastLine = array_pop($lines);
-
- if (trim($lastLine) !== '}') {
- array_push($lines, $lastLine);
- }
-
- // just in case we had code on the bracket lines
- return rtrim(ltrim(implode("\n", $lines), '{'), '}');
- }
-
- public function toString()
- {
- return parent::__toString();
- }
-
- public function __toString()
- {
- return parent::__toString();
- }
-
- /**
- * Creates a new FileScanner instance.
- *
- * By having this as a seperate method it allows the method to be overridden
- * if a different FileScanner is needed.
- *
- * @param string $filename
- *
- * @return FileScanner
- */
- protected function createFileScanner($filename)
- {
- return new CachingFileScanner($filename);
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|