/** * Returns an instance of the cache_factor method. * * @param bool $forcereload If set to true a new cache_factory instance will be created and used. * @return cache_factory */ public static function instance($forcereload = false) { global $CFG; if ($forcereload || self::$instance === null) { // Initialise a new factory to facilitate our needs. if (defined('CACHE_DISABLE_ALL') && CACHE_DISABLE_ALL !== false) { // The cache has been disabled. Load disabledlib and start using the factory designed to handle this // situation. It will use disabled alternatives where available. require_once $CFG->dirroot . '/cache/disabledlib.php'; self::$instance = new cache_factory_disabled(); } else { if (defined('PHPUNIT_TEST') && PHPUNIT_TEST) { // We're using the regular factory. require_once $CFG->dirroot . '/cache/tests/fixtures/lib.php'; self::$instance = new cache_phpunit_factory(); if (defined('CACHE_DISABLE_STORES') && CACHE_DISABLE_STORES !== false) { // The cache stores have been disabled. self::$instance->set_state(self::STATE_STORES_DISABLED); } } else { // We're using the regular factory. self::$instance = new cache_factory(); if (defined('CACHE_DISABLE_STORES') && CACHE_DISABLE_STORES !== false) { // The cache stores have been disabled. self::$instance->set_state(self::STATE_STORES_DISABLED); } } } } return self::$instance; }