1: <?php declare(strict_types = 1);
2:
3: namespace PHPStan\Analyser;
4:
5: use PHPStan\Reflection\ClassConstantReflection;
6: use PHPStan\Reflection\ClassMemberAccessAnswerer;
7: use PHPStan\Reflection\ClassReflection;
8: use PHPStan\Reflection\ExtendedPropertyReflection;
9: use PHPStan\Reflection\MethodReflection;
10: use PHPStan\Reflection\PropertyReflection;
11: use PHPStan\Turbo\ReferencedByTurboExtension;
12:
13: #[ReferencedByTurboExtension(key: 'outOfClassScope')]
14: final class OutOfClassScope implements ClassMemberAccessAnswerer
15: {
16:
17: /** @api */
18: public function __construct()
19: {
20: }
21:
22: public function isInClass(): bool
23: {
24: return false;
25: }
26:
27: public function getClassReflection(): ?ClassReflection
28: {
29: return null;
30: }
31:
32: public function canAccessProperty(PropertyReflection $propertyReflection): bool
33: {
34: return $propertyReflection->isPublic();
35: }
36:
37: public function canReadProperty(ExtendedPropertyReflection $propertyReflection): bool
38: {
39: return $propertyReflection->isPublic();
40: }
41:
42: public function canWriteProperty(ExtendedPropertyReflection $propertyReflection): bool
43: {
44: return $propertyReflection->isPublic()
45: && !$propertyReflection->isProtectedSet()
46: && !$propertyReflection->isPrivateSet();
47: }
48:
49: public function canCallMethod(MethodReflection $methodReflection): bool
50: {
51: return $methodReflection->isPublic();
52: }
53:
54: public function canAccessConstant(ClassConstantReflection $constantReflection): bool
55: {
56: return $constantReflection->isPublic();
57: }
58:
59: }
60: