1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Reflection;
4:
5: use PhpParser\Node;
6: use PHPStan\Analyser\Scope;
7:
8: /**
9: * @api
10: * @api-do-not-implement
11: */
12: interface ReflectionProvider
13: {
14:
15: /** @phpstan-assert-if-true =class-string $className */
16: public function hasClass(string $className): bool;
17:
18: public function getClass(string $className): ClassReflection;
19:
20: public function getClassName(string $className): string;
21:
22: public function getAnonymousClassReflection(
23: Node\Stmt\Class_ $classNode,
24: Scope $scope,
25: ): ClassReflection;
26:
27: /** @return list<string> */
28: public function getUniversalObjectCratesClasses(): array;
29:
30: public function hasFunction(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): bool;
31:
32: public function getFunction(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): FunctionReflection;
33:
34: public function resolveFunctionName(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): ?string;
35:
36: public function hasConstant(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): bool;
37:
38: public function getConstant(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): ConstantReflection;
39:
40: public function resolveConstantName(Node\Name $nameNode, ?NamespaceAnswerer $namespaceAnswerer): ?string;
41:
42: }
43: