1<?php declare(strict_types=1); 2 3namespace PhpParser\Node\Stmt; 4 5use PhpParser\Modifiers; 6use PhpParser\Node; 7 8class ClassConst extends Node\Stmt { 9 /** @var int Modifiers */ 10 public int $flags; 11 /** @var Node\Const_[] Constant declarations */ 12 public array $consts; 13 /** @var Node\AttributeGroup[] PHP attribute groups */ 14 public array $attrGroups; 15 /** @var Node\Identifier|Node\Name|Node\ComplexType|null Type declaration */ 16 public ?Node $type; 17 18 /** 19 * Constructs a class const list node. 20 * 21 * @param Node\Const_[] $consts Constant declarations 22 * @param int $flags Modifiers 23 * @param array<string, mixed> $attributes Additional attributes 24 * @param list<Node\AttributeGroup> $attrGroups PHP attribute groups 25 * @param null|Node\Identifier|Node\Name|Node\ComplexType $type Type declaration 26 */ 27 public function __construct( 28 array $consts, 29 int $flags = 0, 30 array $attributes = [], 31 array $attrGroups = [], 32 ?Node $type = null 33 ) { 34 $this->attributes = $attributes; 35 $this->flags = $flags; 36 $this->consts = $consts; 37 $this->attrGroups = $attrGroups; 38 $this->type = $type; 39 } 40 41 public function getSubNodeNames(): array { 42 return ['attrGroups', 'flags', 'type', 'consts']; 43 } 44 45 /** 46 * Whether constant is explicitly or implicitly public. 47 */ 48 public function isPublic(): bool { 49 return ($this->flags & Modifiers::PUBLIC) !== 0 50 || ($this->flags & Modifiers::VISIBILITY_MASK) === 0; 51 } 52 53 /** 54 * Whether constant is protected. 55 */ 56 public function isProtected(): bool { 57 return (bool) ($this->flags & Modifiers::PROTECTED); 58 } 59 60 /** 61 * Whether constant is private. 62 */ 63 public function isPrivate(): bool { 64 return (bool) ($this->flags & Modifiers::PRIVATE); 65 } 66 67 /** 68 * Whether constant is final. 69 */ 70 public function isFinal(): bool { 71 return (bool) ($this->flags & Modifiers::FINAL); 72 } 73 74 public function getType(): string { 75 return 'Stmt_ClassConst'; 76 } 77} 78