tokens = $propertyTokens; $this->nameInformation = $nameInformation; } /** * @param string $class */ public function setClass($class) { $this->class = $class; } /** * @param ClassScanner $scannerClass */ public function setScannerClass(ClassScanner $scannerClass) { $this->scannerClass = $scannerClass; } /** * @return ClassScanner */ public function getClassScanner() { return $this->scannerClass; } /** * @return string */ public function getName() { $this->scan(); return $this->name; } /** * @return bool */ public function isPublic() { $this->scan(); return $this->isPublic; } /** * @return bool */ public function isPrivate() { $this->scan(); return $this->isPrivate; } /** * @return bool */ public function isProtected() { $this->scan(); return $this->isProtected; } /** * @return bool */ public function isStatic() { $this->scan(); return $this->isStatic; } /** * @return string */ public function getValue() { $this->scan(); return $this->value; } /** * @return string */ public function getDocComment() { $this->scan(); return $this->docComment; } /** * @param Annotation\AnnotationManager $annotationManager * @return AnnotationScanner */ public function getAnnotations(Annotation\AnnotationManager $annotationManager) { if (($docComment = $this->getDocComment()) == '') { return false; } return new AnnotationScanner($annotationManager, $docComment, $this->nameInformation); } /** * @return string */ public function __toString() { $this->scan(); return var_export($this, true); } /** * Scan tokens * * @throws \Zend\Code\Exception\RuntimeException */ protected function scan() { if ($this->isScanned) { return; } if (!$this->tokens) { throw new Exception\RuntimeException('No tokens were provided'); } /** * Variables & Setup */ $tokens = &$this->tokens; reset($tokens); SCANNER_TOP: $token = current($tokens); if (!is_string($token)) { list($tokenType, $tokenContent, $tokenLine) = $token; switch ($tokenType) { case T_DOC_COMMENT: if ($this->docComment === null && $this->name === null) { $this->docComment = $tokenContent; } goto SCANNER_CONTINUE; case T_VARIABLE: $this->name = ltrim($tokenContent, '$'); goto SCANNER_CONTINUE; case T_PUBLIC: // use defaults goto SCANNER_CONTINUE; case T_PROTECTED: $this->isProtected = true; $this->isPublic = false; goto SCANNER_CONTINUE; case T_PRIVATE: $this->isPrivate = true; $this->isPublic = false; goto SCANNER_CONTINUE; case T_STATIC: $this->isStatic = true; goto SCANNER_CONTINUE; default: if ($this->name !== null && trim($tokenContent) !== '') { $this->value .= (is_string($token)) ? $token : $tokenContent; if (substr($this->value, 0, 1) === '"' || substr($this->value, 0, 1) === "'") { $this->value = substr($this->value, 1, -1); // Remove quotes } } goto SCANNER_CONTINUE; } } SCANNER_CONTINUE: if (next($this->tokens) === false) { goto SCANNER_END; } goto SCANNER_TOP; SCANNER_END: $this->isScanned = true; } }