- <?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 ReflectionClass;
- use Zend\Code\Annotation\AnnotationCollection;
- use Zend\Code\Annotation\AnnotationManager;
- use Zend\Code\Scanner\AnnotationScanner;
- use Zend\Code\Scanner\FileScanner;
-
- class ClassReflection extends ReflectionClass implements ReflectionInterface
- {
- /**
- * @var AnnotationScanner
- */
- protected $annotations = null;
-
- /**
- * @var DocBlockReflection
- */
- protected $docBlock = null;
-
- /**
- * Return the reflection file of the declaring file.
- *
- * @return FileReflection
- */
- public function getDeclaringFile()
- {
- $instance = new FileReflection($this->getFileName());
-
- return $instance;
- }
-
- /**
- * Return the classes DocBlock reflection object
- *
- * @return DocBlockReflection
- * @throws Exception\ExceptionInterface for missing DocBock or invalid reflection class
- */
- public function getDocBlock()
- {
- if (isset($this->docBlock)) {
- return $this->docBlock;
- }
-
- if ('' == $this->getDocComment()) {
- return false;
- }
-
- $this->docBlock = new DocBlockReflection($this);
-
- return $this->docBlock;
- }
-
- /**
- * @param AnnotationManager $annotationManager
- * @return AnnotationCollection
- */
- public function getAnnotations(AnnotationManager $annotationManager)
- {
- $docComment = $this->getDocComment();
-
- if ($docComment == '') {
- return false;
- }
-
- if ($this->annotations) {
- return $this->annotations;
- }
-
- $fileScanner = $this->createFileScanner($this->getFileName());
- $nameInformation = $fileScanner->getClassNameInformation($this->getName());
-
- if (!$nameInformation) {
- return false;
- }
-
- $this->annotations = new AnnotationScanner($annotationManager, $docComment, $nameInformation);
-
- return $this->annotations;
- }
-
- /**
- * Return the start line of the class
- *
- * @param bool $includeDocComment
- * @return int
- */
- public function getStartLine($includeDocComment = false)
- {
- if ($includeDocComment && $this->getDocComment() != '') {
- return $this->getDocBlock()->getStartLine();
- }
-
- return parent::getStartLine();
- }
-
- /**
- * Return the contents of the class
- *
- * @param bool $includeDocBlock
- * @return string
- */
- public function getContents($includeDocBlock = true)
- {
- $fileName = $this->getFileName();
-
- if (false === $fileName || ! file_exists($fileName)) {
- return '';
- }
-
- $filelines = file($fileName);
- $startnum = $this->getStartLine($includeDocBlock);
- $endnum = $this->getEndLine() - $this->getStartLine();
-
- // Ensure we get between the open and close braces
- $lines = array_slice($filelines, $startnum, $endnum);
- array_unshift($lines, $filelines[$startnum-1]);
-
- return strstr(implode('', $lines), '{');
- }
-
- /**
- * Get all reflection objects of implemented interfaces
- *
- * @return ClassReflection[]
- */
- public function getInterfaces()
- {
- $phpReflections = parent::getInterfaces();
- $zendReflections = array();
- while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
- $instance = new ClassReflection($phpReflection->getName());
- $zendReflections[] = $instance;
- unset($phpReflection);
- }
- unset($phpReflections);
-
- return $zendReflections;
- }
-
- /**
- * Return method reflection by name
- *
- * @param string $name
- * @return MethodReflection
- */
- public function getMethod($name)
- {
- $method = new MethodReflection($this->getName(), parent::getMethod($name)->getName());
-
- return $method;
- }
-
- /**
- * Get reflection objects of all methods
- *
- * @param string $filter
- * @return MethodReflection[]
- */
- public function getMethods($filter = -1)
- {
- $methods = array();
- foreach (parent::getMethods($filter) as $method) {
- $instance = new MethodReflection($this->getName(), $method->getName());
- $methods[] = $instance;
- }
-
- return $methods;
- }
-
- /**
- * Get parent reflection class of reflected class
- *
- * @return ClassReflection|bool
- */
- public function getParentClass()
- {
- $phpReflection = parent::getParentClass();
- if ($phpReflection) {
- $zendReflection = new ClassReflection($phpReflection->getName());
- unset($phpReflection);
-
- return $zendReflection;
- }
-
- return false;
- }
-
- /**
- * Return reflection property of this class by name
- *
- * @param string $name
- * @return PropertyReflection
- */
- public function getProperty($name)
- {
- $phpReflection = parent::getProperty($name);
- $zendReflection = new PropertyReflection($this->getName(), $phpReflection->getName());
- unset($phpReflection);
-
- return $zendReflection;
- }
-
- /**
- * Return reflection properties of this class
- *
- * @param int $filter
- * @return PropertyReflection[]
- */
- public function getProperties($filter = -1)
- {
- $phpReflections = parent::getProperties($filter);
- $zendReflections = array();
- while ($phpReflections && ($phpReflection = array_shift($phpReflections))) {
- $instance = new PropertyReflection($this->getName(), $phpReflection->getName());
- $zendReflections[] = $instance;
- unset($phpReflection);
- }
- unset($phpReflections);
-
- return $zendReflections;
- }
-
- 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 FileScanner($filename);
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|