Esempio n. 1
0
 /**
  * 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;
 }