isInstall() || $mode->isBackend()) { $session = new MemorySession(); } else { $session_handler = $config->get('system', 'session_handler', self::DEFAULT); switch ($session_handler) { case self::INTERNAL: $session = new NativeSession($config, $cookie); break; case self::DATABASE: default: $session = new DatabaseSession($config, $cookie, $dba, $logger, $server); break; case self::CACHE: // In case we're using the db as cache driver, use the native db session, not the cache if ($config->get('system', 'cache_driver') === Cache::TYPE_DATABASE) { $session = new DatabaseSession($config, $cookie, $dba, $logger, $server); } else { $session = new CacheSession($config, $cookie, $cache, $logger, $server); } break; } } } finally { $profiler->saveTimestamp($stamp1, 'parser', System::callstack()); return $session; } } }