/** * Returns cache driver. Cached items will persist between connections and are * available to all users. When debug is enabled a dummy cache driver is used * that caches nothing. * * @return \GO\Base\Cache\CacheInterface */ public static function cache() { if (!isset(self::$_cache)) { if (GO::config()->debug || !GO::isInstalled()) { self::$_cache = new \GO\Base\Cache\None(); } else { if (!isset(GO::session()->values['cacheDriver'])) { $cachePref = array("\\GO\\Base\\Cache\\Apc", "\\GO\\Base\\Cache\\Disk"); foreach ($cachePref as $cacheDriver) { $cache = new $cacheDriver(); if ($cache->supported()) { GO::debug("Using {$cacheDriver} cache"); GO::session()->values['cacheDriver'] = $cacheDriver; self::$_cache = $cache; break; } } } else { $cacheDriver = GO::session()->values['cacheDriver']; self::$_cache = new $cacheDriver(); } } } return self::$_cache; }