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')); }
private function registerCacheConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader) { $nonce = substr(str_replace('/', '-', base64_encode(md5(uniqid(mt_rand(), true), true))), 0, -2); $container->getDefinition('cache.adapter.apcu')->replaceArgument(2, $nonce); $container->getDefinition('cache.adapter.system')->replaceArgument(2, $nonce); $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); } $this->addClassesToCompile(array('Psr\\Cache\\CacheItemInterface', 'Psr\\Cache\\CacheItemPoolInterface', 'Symfony\\Component\\Cache\\Adapter\\AdapterInterface', 'Symfony\\Component\\Cache\\Adapter\\AbstractAdapter', 'Symfony\\Component\\Cache\\CacheItem')); }