PHPStan\Analyser\Scope::canAccessClassMember PHP Method

canAccessClassMember() private method

private canAccessClassMember ( PHPStan\Reflection\ClassMemberReflection $classMemberReflection ) : boolean
$classMemberReflection PHPStan\Reflection\ClassMemberReflection
return boolean
    private function canAccessClassMember(ClassMemberReflection $classMemberReflection) : bool
    {
        if ($classMemberReflection->isPublic()) {
            return true;
        }
        $class = $this->inClosureBindScopeClass !== null ? $this->inClosureBindScopeClass : $this->getClass();
        if ($class === null) {
            return false;
        }
        if (!$this->broker->hasClass($class)) {
            return false;
        }
        $classReflectionName = $classMemberReflection->getDeclaringClass()->getName();
        if ($classMemberReflection->isPrivate()) {
            return $class === $classReflectionName;
        }
        $currentClassReflection = $this->broker->getClass($class);
        // protected
        return $currentClassReflection->getName() === $classReflectionName || $currentClassReflection->isSubclassOf($classReflectionName);
    }