ContainerInteropDoctrine\CacheFactory::createWithConfig PHP Method

createWithConfig() protected method

protected createWithConfig ( Interop\Container\ContainerInterface $container, $configKey )
$container Interop\Container\ContainerInterface
    protected function createWithConfig(ContainerInterface $container, $configKey)
    {
        $config = $this->retrieveConfig($container, $configKey, 'cache');
        if (!array_key_exists('class', $config)) {
            throw new OutOfBoundsException('Missing "class" config key');
        }
        $instance = null;
        if (array_key_exists('instance', $config)) {
            $instance = is_string($config['instance']) ? $container->get($config['instance']) : $config['instance'];
        }
        switch ($config['class']) {
            case FilesystemCache::class:
                $cache = new $config['class']();
                break;
            case PredisCache::class:
                $cache = new $config['class']($instance);
                break;
            default:
                $cache = new $config['class']();
        }
        if ($cache instanceof MemcacheCache) {
            $cache->setMemcache($instance);
        } elseif ($cache instanceof MemcachedCache) {
            $cache->setMemcached($instance);
        } elseif ($cache instanceof RedisCache) {
            $cache->setRedis($instance);
        }
        if ($cache instanceof CacheProvider && array_key_exists('namespace', $config)) {
            $cache->setNamespace($config['namespace']);
        }
        return $cache;
    }