Fn_get_session_data из fn.common.php - растет лог ошибок из-за отсутствия проверки типа

Мультивендор последней версии.
Сильно замусорены логи ошибок, по две-три записи вот такого вида (сильно сократил троеточиями понятно почему):

2023/01/25 00:00:29 [error] 109492#109492: *1125066 FastCGI sent in stderr: “PHP message: PHP Notice: Trying to access array offset on value of type bool in /…/app/functions/fn.common.php on line 1956” while reading response header from upstream, client: xxx.xxx.xxx.xxx, server: domen.ru, request: “GET /index.php?dispatch=block_manager.render&object_key=s6H11%2…%2Bhv8xQ%3D%3D&redirect_url=https%3A%2F%2Fdomen.ru%2Fga…k-12-5-mm%2F&abt__ut2_initial_request=xOgeBu…g%3D%3D&abt__ut2_assign_data=O80Eo1…2eKS&is_ajax=1 HTTP/2.0”, upstream: “fastcgi://unix:/va…ck:”, host: “domen.ru”, referrer: “https://domen.ru/ga...k-12-5-mm/

в указанном файла fn.common.php находится функция

function fn_get_session_data($var = '')
{
    /** @var \Tygh\Web\Session $session */
    $session = Tygh::$app['session'];

    if (!$var) {
        $return = [];

        foreach ($session['settings'] as $name => $setting) {
            if (empty($setting['expiry']) || $setting['expiry'] > TIME) {
                $return[$name] = $setting['value'];
            } else {
                unset($session['settings'][$name]);
                $session->markSettingsAsRequiredToSave();
            }
        }
    } elseif (
        !empty($session['settings'][$var])
        && (empty($session['settings'][$var]['expiry']) ||  $session['settings'][$var]['expiry'] > TIME)
    ) {
        $return = isset($session['settings'][$var]['value']) ? $session['settings'][$var]['value'] : '';
    } else {
        if (!empty($session['settings'][$var])) {
            unset($session['settings'][$var]);
            $session->markSettingsAsRequiredToSave();
        }

        $return = false;
    }

    return $return;
}

в функцию приходят данные сессии из Tygh::$app[‘session’] :

{“start_on_init”:true,“start_on_read”:false,“start_on_write”:false,“storage_class”:“\Tygh\Backend\Session\Database”,“cookie_path”:“/”,“cookie_domain”:“.domain.ru”,“cookie_lifetime”:1209600,“cookie_secure”:true,“cookie_httponly”:true,“cookie_samesite”:“…”,“gc_probability”:1,“gc_divisor”:10,“cache_limiter”:“nocache”,“cache_expire”:180,“gc_handlers”:[{},{}],“writability_handlers”:[{}]}

то есть settings в сессии нет, но…
мы почему-то все равно попадаем внутрь цикла

        foreach ($session['settings'] as $name => $setting) {
            if (empty($setting['expiry']) || $setting['expiry'] > TIME) {
                $return[$name] = $setting['value'];

и на строке $return[$name] = $setting[‘value’]
получаем несоответствие типов, когда $setting - это логическое значение, у которого не может быть элемента ‘value’

4 лайка