/** * @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]; }