- <?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 ReflectionProperty as PhpReflectionProperty;
- use Zend\Code\Annotation\AnnotationManager;
- use Zend\Code\Scanner\AnnotationScanner;
- use Zend\Code\Scanner\CachingFileScanner;
- /**
- * @todo implement line numbers
- */
- class PropertyReflection extends PhpReflectionProperty implements ReflectionInterface
- {
- /**
- * @var AnnotationScanner
- */
- protected $annotations;
- /**
- * Get declaring class reflection object
- *
- * @return ClassReflection
- */
- public function getDeclaringClass()
- {
- $phpReflection = parent::getDeclaringClass();
- $zendReflection = new ClassReflection($phpReflection->getName());
- unset($phpReflection);
- return $zendReflection;
- }
- /**
- * Get DocBlock comment
- *
- * @return string|false False if no DocBlock defined
- */
- public function getDocComment()
- {
- return parent::getDocComment();
- }
- /**
- * @return false|DocBlockReflection
- */
- public function getDocBlock()
- {
- if (!($docComment = $this->getDocComment())) {
- return false;
- }
- $docBlockReflection = new DocBlockReflection($docComment);
- return $docBlockReflection;
- }
- /**
- * @param AnnotationManager $annotationManager
- * @return AnnotationScanner
- */
- public function getAnnotations(AnnotationManager $annotationManager)
- {
- if (null !== $this->annotations) {
- return $this->annotations;
- }
- if (($docComment = $this->getDocComment()) == '') {
- return false;
- }
- $class = $this->getDeclaringClass();
- $cachingFileScanner = $this->createFileScanner($class->getFileName());
- $nameInformation = $cachingFileScanner->getClassNameInformation($class->getName());
- if (!$nameInformation) {
- return false;
- }
- $this->annotations = new AnnotationScanner($annotationManager, $docComment, $nameInformation);
- return $this->annotations;
- }
- public function toString()
- {
- return $this->__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);
- }
- }