1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Analyser;
4:
5: use PHPStan\Reflection\FunctionReflection;
6: use PHPStan\Reflection\MethodReflection;
7: use PHPStan\Reflection\ParametersAcceptor;
8: use PHPStan\Type\Type;
9:
10: interface ScopeFactory
11: {
12:
13: /**
14: * @api
15: * @param array<string, Type> $constantTypes
16: * @param VariableTypeHolder[] $variablesTypes
17: * @param VariableTypeHolder[] $moreSpecificTypes
18: * @param array<string, ConditionalExpressionHolder[]> $conditionalExpressions
19: * @param array<string, true> $currentlyAssignedExpressions
20: * @param array<string, true> $currentlyAllowedUndefinedExpressions
21: * @param array<string, Type> $nativeExpressionTypes
22: * @param array<MethodReflection|FunctionReflection> $inFunctionCallsStack
23: *
24: */
25: public function create(
26: ScopeContext $context,
27: bool $declareStrictTypes = false,
28: array $constantTypes = [],
29: FunctionReflection|MethodReflection|null $function = null,
30: ?string $namespace = null,
31: array $variablesTypes = [],
32: array $moreSpecificTypes = [],
33: array $conditionalExpressions = [],
34: ?string $inClosureBindScopeClass = null,
35: ?ParametersAcceptor $anonymousFunctionReflection = null,
36: bool $inFirstLevelStatement = true,
37: array $currentlyAssignedExpressions = [],
38: array $currentlyAllowedUndefinedExpressions = [],
39: array $nativeExpressionTypes = [],
40: array $inFunctionCallsStack = [],
41: bool $afterExtractCall = false,
42: ?Scope $parentScope = null,
43: ): MutatingScope;
44:
45: }
46: