Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass::getServiceProvider PHP Method

getServiceProvider() public static method

public static getServiceProvider ( ContainerBuilder $container, $name )
$container Symfony\Component\DependencyInjection\ContainerBuilder
    public static function getServiceProvider(ContainerBuilder $container, $name)
    {
        $container->resolveEnvPlaceholders($name, null, $usedEnvs);
        if (0 === strpos($name, 'redis://') || $usedEnvs) {
            $dsn = $name;
            if (!$container->hasDefinition($name = md5($dsn))) {
                $definition = new Definition(\Redis::class);
                $definition->setPublic(false);
                $definition->setFactory(array(RedisAdapter::class, 'createConnection'));
                $definition->setArguments(array($dsn));
                $container->setDefinition($name, $definition);
            }
        }
        return $name;
    }

Usage Example

Example #1
0
 private function registerCacheConfiguration(array $config, ContainerBuilder $container)
 {
     $version = substr(str_replace('/', '-', base64_encode(md5(uniqid(mt_rand(), true), true))), 0, -2);
     $container->getDefinition('cache.adapter.apcu')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.system')->replaceArgument(2, $version);
     $container->getDefinition('cache.adapter.filesystem')->replaceArgument(2, $config['directory']);
     foreach (array('doctrine', 'psr6', 'redis') as $name) {
         if (isset($config[$name = 'default_' . $name . '_provider'])) {
             $container->setAlias('cache.' . $name, Compiler\CachePoolPass::getServiceProvider($container, $config[$name]));
         }
     }
     foreach (array('app', 'system') as $name) {
         $config['pools']['cache.' . $name] = array('adapter' => $config[$name], 'public' => true);
     }
     foreach ($config['pools'] as $name => $pool) {
         $definition = new DefinitionDecorator($pool['adapter']);
         $definition->setPublic($pool['public']);
         unset($pool['adapter'], $pool['public']);
         $definition->addTag('cache.pool', $pool);
         $container->setDefinition($name, $definition);
     }
     if (method_exists(PropertyAccessor::class, 'createCache')) {
         $propertyAccessDefinition = $container->register('cache.property_access', AdapterInterface::class);
         $propertyAccessDefinition->setPublic(false);
         $propertyAccessDefinition->setFactory(array(PropertyAccessor::class, 'createCache'));
         $propertyAccessDefinition->setArguments(array(null, null, $version, new Reference('logger', ContainerInterface::IGNORE_ON_INVALID_REFERENCE)));
         $propertyAccessDefinition->addTag('cache.pool', array('clearer' => 'cache.default_clearer'));
         $propertyAccessDefinition->addTag('monolog.logger', array('channel' => 'cache'));
     }
     $this->addClassesToCompile(array('Symfony\\Component\\Cache\\Adapter\\ApcuAdapter', 'Symfony\\Component\\Cache\\Adapter\\FilesystemAdapter', 'Symfony\\Component\\Cache\\CacheItem'));
 }
All Usage Examples Of Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\CachePoolPass::getServiceProvider