/** * @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); }
/** * @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); }
/** * @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); }