1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Node;
4:
5: use Override;
6: use PhpParser\Node\Stmt\ClassConst;
7: use PhpParser\Node\Stmt\ClassLike;
8: use PhpParser\NodeAbstract;
9: use PHPStan\Node\Constant\ClassConstantFetch;
10: use PHPStan\Reflection\ClassReflection;
11: use PHPStan\Turbo\ReferencedByTurboExtension;
12:
13: /**
14: * @api
15: */
16: #[ReferencedByTurboExtension(key: 'classConstantsNode')]
17: final class ClassConstantsNode extends NodeAbstract implements VirtualNode
18: {
19:
20: /**
21: * @param ClassConst[] $constants
22: * @param ClassConstantFetch[] $fetches
23: */
24: public function __construct(private ClassLike $class, private array $constants, private array $fetches, private ClassReflection $classReflection)
25: {
26: parent::__construct($class->getAttributes());
27: }
28:
29: public function getClass(): ClassLike
30: {
31: return $this->class;
32: }
33:
34: /**
35: * @return ClassConst[]
36: */
37: public function getConstants(): array
38: {
39: return $this->constants;
40: }
41:
42: /**
43: * @return ClassConstantFetch[]
44: */
45: public function getFetches(): array
46: {
47: return $this->fetches;
48: }
49:
50: #[Override]
51: public function getType(): string
52: {
53: return 'PHPStan_Node_ClassConstantsNode';
54: }
55:
56: /**
57: * @return string[]
58: */
59: #[Override]
60: public function getSubNodeNames(): array
61: {
62: return [];
63: }
64:
65: public function getClassReflection(): ClassReflection
66: {
67: return $this->classReflection;
68: }
69:
70: }
71: