Exemplo n.º 1
0
 /**
  * @return Constant
  * Get the (non-class) constant associated with this node
  * in this context
  *
  * @throws NodeException
  * An exception is thrown if we can't understand the node
  *
  * @throws CodeBaseExtension
  * An exception is thrown if we can't find the given
  * class
  */
 public function getConst() : Constant
 {
     assert($this->node->kind === \ast\AST_CONST, "Node must be of type \\ast\\AST_CONST");
     if ($this->node->children['name']->kind !== \ast\AST_NAME) {
         throw new NodeException($this->node, "Can't determine constant name");
     }
     // Get an FQSEN for the root namespace
     $fqsen = null;
     $constant_name = $this->node->children['name']->children['name'];
     if (!$this->code_base->hasConstant($fqsen, $constant_name)) {
         throw new CodeBaseException($fqsen, "Cannot find constant with name {$constant_name}");
     }
     return $this->code_base->getConstant($fqsen, $constant_name);
 }
Exemplo n.º 2
0
 /**
  * @return ClassConstant
  * Get the (non-class) constant associated with this node
  * in this context
  *
  * @throws NodeException
  * An exception is thrown if we can't understand the node
  *
  * @throws CodeBaseExtension
  * An exception is thrown if we can't find the given
  * class
  */
 public function getConst() : ClassConstant
 {
     assert($this->node->kind === \ast\AST_CONST, "Node must be of type \\ast\\AST_CONST");
     if ($this->node->children['name']->kind !== \ast\AST_NAME) {
         throw new NodeException($this->node, "Can't determine constant name");
     }
     // Get an FQSEN for the root namespace
     $fqsen = null;
     $constant_name = $this->node->children['name']->children['name'];
     if (!$this->code_base->hasConstant($fqsen, $constant_name)) {
         throw new IssueException(Issue::fromType(Issue::UndeclaredConstant)($this->context->getFile(), $this->node->lineno ?? 0, [$constant_name]));
     }
     return $this->code_base->getConstant($fqsen, $constant_name);
 }
Exemplo n.º 3
0
 /**
  * @return bool
  * True if a constant with the given name is defined
  * on this class.
  */
 public function hasConstantWithName(CodeBase $code_base, string $name) : bool
 {
     return $code_base->hasConstant($this->getFQSEN(), $name);
 }