1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Node;
4:
5: use Override;
6: use PhpParser\Node;
7: use PhpParser\NodeAbstract;
8: use PHPStan\Reflection\ClassReflection;
9: use PHPStan\Reflection\Php\PhpMethodFromParserNodeReflection;
10: use PHPStan\Reflection\Php\PhpPropertyReflection;
11: use PHPStan\Turbo\ReferencedByTurboExtension;
12:
13: /**
14: * @api
15: */
16: #[ReferencedByTurboExtension(key: 'inPropertyHookNode')]
17: final class InPropertyHookNode extends NodeAbstract implements VirtualNode
18: {
19:
20: public function __construct(
21: private ClassReflection $classReflection,
22: private PhpMethodFromParserNodeReflection $hookReflection,
23: private PhpPropertyReflection $propertyReflection,
24: private Node\PropertyHook $originalNode,
25: )
26: {
27: parent::__construct($originalNode->getAttributes());
28: }
29:
30: public function getClassReflection(): ClassReflection
31: {
32: return $this->classReflection;
33: }
34:
35: public function getHookReflection(): PhpMethodFromParserNodeReflection
36: {
37: return $this->hookReflection;
38: }
39:
40: public function getPropertyReflection(): PhpPropertyReflection
41: {
42: return $this->propertyReflection;
43: }
44:
45: public function getOriginalNode(): Node\PropertyHook
46: {
47: return $this->originalNode;
48: }
49:
50: #[Override]
51: public function getType(): string
52: {
53: return 'PHPStan_Node_InPropertyHookNode';
54: }
55:
56: /**
57: * @return string[]
58: */
59: #[Override]
60: public function getSubNodeNames(): array
61: {
62: return [];
63: }
64:
65: }
66: