コード例 #1
0
ファイル: CacheManager.php プロジェクト: dudusouza/wowadmin
 /**
  * @param string $storage
  * @param array $config
  * @return DriverAbstract
  */
 public static function getInstance($storage = 'auto', $config = array())
 {
     $storage = strtolower($storage);
     if (empty($config)) {
         $config = phpFastCache::$config;
     }
     if (!isset($config['cache_method'])) {
         $config['cache_method'] = phpFastCache::$config['cache_method'];
     }
     if (!isset($config['limited_memory_each_object'])) {
         $config['limited_memory_each_object'] = phpFastCache::$config['limited_memory_each_object'];
     }
     if (isset(phpFastCache::$config['overwrite']) && !in_array(phpFastCache::$config['overwrite'], array('auto', ''), true)) {
         phpFastCache::$config['storage'] = phpFastCache::$config['overwrite'];
         $storage = phpFastCache::$config['overwrite'];
     } else {
         if (isset(phpFastCache::$config['storage']) && !in_array(phpFastCache::$config['storage'], array('auto', ''), true)) {
             $storage = phpFastCache::$config['storage'];
         } else {
             if (in_array($storage, array('auto', ''), true)) {
                 $storage = phpFastCache::getAutoClass($config);
             }
         }
     }
     //  echo $storage."<br>";
     $instance = md5(serialize($config) . $storage);
     if (!isset(self::$instances[$instance]) || is_null(self::$instances[$instance])) {
         $class = '\\phpFastCache\\Drivers\\' . $storage;
         $config['storage'] = $storage;
         $config['instance'] = $instance;
         $config['class'] = $class;
         if (!isset(self::$memory[$instance])) {
             self::$memory[$instance] = array();
         }
         if (!isset(self::$hit[$instance])) {
             self::$hit[$instance] = array("class" => $class, "storage" => $storage, "data" => array());
             if ($config['cache_method'] == 4) {
                 register_shutdown_function('phpFastCache\\CacheManager::cleanCachingMethod', null);
             }
         }
         self::$instances[$instance] = new $class($config);
     }
     return self::$instances[$instance];
 }