/**
  * @param string                                                    $cacheName
  * @param string                                                    $objectManagerName
  * @param array                                                     $cacheDriver
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder   $container
  *
  * @return string
  */
 public function loadCacheDriver($cacheName, $objectManagerName, array $cacheDriver, ContainerBuilder $container)
 {
     $id = $this->getObjectManagerElementName($objectManagerName . '_' . $cacheName);
     $host = isset($cacheDriver['host']) ? $cacheDriver['host'] : null;
     $port = isset($cacheDriver['port']) ? $cacheDriver['port'] : null;
     $type = $cacheDriver['type'];
     if ($type == 'service') {
         $container->setAlias($id, new Alias($cacheDriver['id'], false));
         return $id;
     }
     $config = array('aliases' => array($id), $type => array(), 'type' => $type, 'namespace' => null);
     if (!isset($cacheDriver['namespace'])) {
         // generate a unique namespace for the given application
         $environment = $container->getParameter('kernel.root_dir') . $container->getParameter('kernel.environment');
         $hash = hash('sha256', $environment);
         $namespace = 'sf2' . $this->mappingResourceName . '_' . $objectManagerName . '_' . $hash;
         $cacheDriver['namespace'] = $namespace;
     }
     $config['namespace'] = $cacheDriver['namespace'];
     if (in_array($type, array('memcache', 'memcached'))) {
         $host = !empty($host) ? $host : 'localhost';
         $config[$type]['servers'][$host] = array('host' => $host, 'port' => !empty($port) ? $port : 11211);
     }
     if ($type === 'redis') {
         $config[$type] = array('host' => !empty($host) ? $host : 'localhost', 'port' => !empty($port) ? $port : 6379, 'password' => null, 'database' => null);
     }
     $this->cacheProviderLoader->loadCacheProvider($id, $config, $container);
     return $id;
 }
 /**
  * @param array                                                     $rootConfig
  * @param \Symfony\Component\DependencyInjection\ContainerBuilder   $container
  */
 protected function loadCacheProviders(array $rootConfig, ContainerBuilder $container)
 {
     foreach ($rootConfig['providers'] as $name => $config) {
         $this->loader->loadCacheProvider($name, $config, $container);
     }
 }