1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Reflection;
4:
5: use PHPStan\TrinaryLogic;
6: use PHPStan\Turbo\ReferencedByTurboExtension;
7: use PHPStan\Type\Type;
8:
9: /**
10: * @api
11: * @api-do-not-implement
12: */
13: #[ReferencedByTurboExtension(key: 'extendedParameterReflection')]
14: interface ExtendedParameterReflection extends ParameterReflection
15: {
16:
17: public function getPhpDocType(): Type;
18:
19: public function hasNativeType(): bool;
20:
21: public function getNativeType(): Type;
22:
23: public function getOutType(): ?Type;
24:
25: public function isImmediatelyInvokedCallable(): TrinaryLogic;
26:
27: public function getClosureThisType(): ?Type;
28:
29: /**
30: * @return list<AttributeReflection>
31: */
32: public function getAttributes(): array;
33:
34: public function getAllowedConstants(): ?ParameterAllowedConstants;
35:
36: /**
37: * @param list<ConstantReflection> $constants Global and/or class constant reflections
38: */
39: public function checkAllowedConstants(array $constants): AllowedConstantsResult;
40:
41: public function isPureUnlessCallableIsImpureParameter(): TrinaryLogic;
42:
43: }
44: