Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 893afda

Browse filesBrowse files
[FrameworkBundle] Simplify config for app/system/pool caches
1 parent 80a5508 commit 893afda
Copy full SHA for 893afda

File tree

17 files changed

+187
-188
lines changed
Filter options

17 files changed

+187
-188
lines changed

‎UPGRADE-3.1.md

Copy file name to clipboardExpand all lines: UPGRADE-3.1.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@ FrameworkBundle
9393
cache service. If you are using `serializer.mapping.cache.apc`, use
9494
`serializer.mapping.cache.doctrine.apc` instead.
9595

96-
* The `framework.serializer.cache` option has been deprecated. Configure a cache pool
97-
called `serializer` under `framework.cache.pools` instead.
96+
* The `framework.serializer.cache` option has been deprecated. Configure the
97+
`cache.serializer` service under `framework.cache.pools` instead.
9898

9999
Before:
100100

@@ -110,7 +110,7 @@ FrameworkBundle
110110
framework:
111111
cache:
112112
pools:
113-
serializer:
113+
cache.serializer:
114114
adapter: cache.adapter.apcu
115115

116116
HttpKernel

‎UPGRADE-4.0.md

Copy file name to clipboardExpand all lines: UPGRADE-4.0.md
+3-3Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ FrameworkBundle
8080
* The service `serializer.mapping.cache.apc` has been removed; use
8181
`serializer.mapping.cache.doctrine.apc` instead.
8282

83-
* The `framework.serializer.cache` option has been removed. Configure a cache pool
84-
called `serializer` under `framework.cache.pools` instead.
83+
* The `framework.serializer.cache` option has been removed. Configure the
84+
`cache.serializer` service under `framework.cache.pools` instead.
8585

8686
Before:
8787

@@ -97,7 +97,7 @@ FrameworkBundle
9797
framework:
9898
cache:
9999
pools:
100-
serializer:
100+
cache.serializer:
101101
adapter: cache.adapter.apcu
102102
```
103103

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Compiler/CachePoolPass.php
+24-2Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111

1212
namespace Symfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

14+
use Symfony\Component\Cache\Adapter\RedisAdapter;
1415
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1516
use Symfony\Component\DependencyInjection\ContainerBuilder;
17+
use Symfony\Component\DependencyInjection\Definition;
1618
use Symfony\Component\DependencyInjection\DefinitionDecorator;
1719
use Symfony\Component\DependencyInjection\Reference;
1820

@@ -60,8 +62,8 @@ public function process(ContainerBuilder $container)
6062
}
6163
unset($tags[0]['clearer']);
6264

63-
if (isset($tags[0]['provider']) && is_string($tags[0]['provider'])) {
64-
$tags[0]['provider'] = new Reference($tags[0]['provider']);
65+
if (isset($tags[0]['provider'])) {
66+
$tags[0]['provider'] = new Reference(static::getServiceProvider($container, $tags[0]['provider']));
6567
}
6668
$i = 0;
6769
foreach ($attributes as $attr) {
@@ -84,4 +86,24 @@ private function getNamespace($namespaceSuffix, $id)
8486
{
8587
return substr(str_replace('/', '-', base64_encode(md5($id.$namespaceSuffix, true))), 0, 10);
8688
}
89+
90+
/**
91+
* @internal
92+
*/
93+
public static function getServiceProvider(ContainerBuilder $container, $name)
94+
{
95+
if (0 === strpos($name, 'redis://')) {
96+
$dsn = $name;
97+
98+
if (!$container->hasDefinition($name = md5($dsn))) {
99+
$definition = new Definition(\Redis::class);
100+
$definition->setPublic(false);
101+
$definition->setFactory(array(RedisAdapter::class, 'createConnection'));
102+
$definition->setArguments(array($dsn));
103+
$container->setDefinition($name, $definition);
104+
}
105+
}
106+
107+
return $name;
108+
}
87109
}

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/Configuration.php
+20-20Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -557,35 +557,35 @@ private function addCacheSection(ArrayNodeDefinition $rootNode)
557557
->info('Cache configuration')
558558
->addDefaultsIfNotSet()
559559
->fixXmlConfig('pool')
560-
->fixXmlConfig('adapter')
561560
->children()
562-
->arrayNode('adapters')
561+
->scalarNode('app')
562+
->info('App related cache pools configuration')
563+
->defaultValue('cache.adapter.filesystem')
564+
->end()
565+
->scalarNode('system')
566+
->info('System related cache pools configuration')
567+
->defaultValue('cache.adapter.filesystem')
568+
->end()
569+
->scalarNode('directory')->defaultValue('%kernel.cache_dir%/pools')->end()
570+
->scalarNode('default_doctrine_provider')->end()
571+
->scalarNode('default_psr6_provider')->end()
572+
->scalarNode('default_redis_provider')->defaultValue('redis://localhost')->end()
573+
->arrayNode('pools')
563574
->useAttributeAsKey('name')
564575
->prototype('array')
565576
->children()
566-
->scalarNode('parent')
567-
->isRequired()
568-
->info('The parent cache adapter service.')
569-
->end()
577+
->scalarNode('adapter')->defaultValue('cache.app')->end()
578+
->booleanNode('public')->defaultFalse()->end()
570579
->integerNode('default_lifetime')->end()
571580
->scalarNode('provider')
572-
->info('The service name to use as provider when the specified parent adapter needs one.')
581+
->info('The service name to use as provider when the specified adapter needs one.')
573582
->end()
574-
->scalarNode('clearer')->defaultValue('cache.default_pools_clearer')->end()
583+
->scalarNode('clearer')->defaultValue('cache.default_clearer')->end()
575584
->end()
576585
->end()
577-
->end()
578-
->arrayNode('pools')
579-
->useAttributeAsKey('name')
580-
->prototype('array')
581-
->children()
582-
->scalarNode('adapter')
583-
->info('The cache adapter service to use as template definition.')
584-
->defaultValue('cache.adapter.shared')
585-
->end()
586-
->booleanNode('public')->defaultTrue()->end()
587-
->integerNode('default_lifetime')->end()
588-
->end()
586+
->validate()
587+
->ifTrue(function ($v) { return isset($v['cache.app']) || isset($v['cache.system']); })
588+
->thenInvalid('"cache.app" and "cache.system" are reserved names')
589589
->end()
590590
->end()
591591
->end()

‎src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+20-16Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public function load(array $configs, ContainerBuilder $container)
7373
$loader->load('property_access.xml');
7474

7575
// Load Cache configuration first as it is used by other components
76-
$loader->load('cache_pools.xml');
76+
$loader->load('cache.xml');
7777

7878
$configuration = $this->getConfiguration($configs, $container);
7979
$config = $this->processConfiguration($configuration, $configs);
@@ -984,7 +984,7 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
984984
$chainLoader->replaceArgument(0, $serializerLoaders);
985985

986986
if (isset($config['cache']) && $config['cache']) {
987-
@trigger_error('The "framework.serializer.cache" option is deprecated since Symfony 3.1 and will be removed in 4.0. You can configure a cache pool called "serializer" under "framework.cache.pools" instead.', E_USER_DEPRECATED);
987+
@trigger_error('The "framework.serializer.cache" option is deprecated since Symfony 3.1 and will be removed in 4.0. Configure the "cache.serializer" service under "framework.cache.pools" instead.', E_USER_DEPRECATED);
988988

989989
$container->setParameter(
990990
'serializer.mapping.cache.prefix',
@@ -999,7 +999,7 @@ private function registerSerializerConfiguration(array $config, ContainerBuilder
999999
CacheClassMetadataFactory::class,
10001000
array(
10011001
new Reference('serializer.mapping.cache_class_metadata_factory.inner'),
1002-
new Reference('cache.pool.serializer'),
1002+
new Reference('cache.serializer'),
10031003
)
10041004
);
10051005
$cacheMetadataFactory->setPublic(false);
@@ -1037,22 +1037,26 @@ private function registerPropertyInfoConfiguration(array $config, ContainerBuild
10371037

10381038
private function registerCacheConfiguration(array $config, ContainerBuilder $container, XmlFileLoader $loader)
10391039
{
1040-
foreach ($config['adapters'] as $name => $adapterConfig) {
1041-
$adapterDefinition = new DefinitionDecorator($adapterConfig['parent']);
1042-
$adapterDefinition->setAbstract(true);
1043-
unset($adapterConfig['parent']);
1040+
$container->getDefinition('cache.adapter.filesystem')->replaceArgument(2, $config['directory']);
10441041

1045-
$adapterDefinition->addTag('cache.pool', $adapterConfig);
1046-
$container->setDefinition('cache.adapter.'.$name, $adapterDefinition);
1042+
foreach (array('doctrine', 'psr6', 'redis') as $name) {
1043+
if (isset($config[$name = 'default_'.$name.'_provider'])) {
1044+
$container->setAlias('cache.'.$name, Compiler\CachePoolPass::getServiceProvider($container, $config[$name]));
1045+
}
10471046
}
1047+
foreach (array('app', 'system') as $name) {
1048+
$config['pools']['cache.'.$name] = array(
1049+
'adapter' => $config[$name],
1050+
'public' => true,
1051+
);
1052+
}
1053+
foreach ($config['pools'] as $name => $pool) {
1054+
$definition = new DefinitionDecorator($pool['adapter']);
1055+
$definition->setPublic($pool['public']);
1056+
unset($pool['adapter'], $pool['public']);
10481057

1049-
foreach ($config['pools'] as $name => $poolConfig) {
1050-
$poolDefinition = new DefinitionDecorator($poolConfig['adapter']);
1051-
$poolDefinition->setPublic($poolConfig['public']);
1052-
unset($poolConfig['adapter'], $poolConfig['public']);
1053-
1054-
$poolDefinition->addTag('cache.pool', $poolConfig);
1055-
$container->setDefinition('cache.pool.'.$name, $poolDefinition);
1058+
$definition->addTag('cache.pool', $pool);
1059+
$container->setDefinition($name, $definition);
10561060
}
10571061

10581062
$this->addClassesToCompile(array(

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/cache_pools.xml renamed to ‎src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.xml
+16-15Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@
66

77
<services>
88

9-
<service id="cache.default_pools_clearer" class="Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer" public="false">
10-
<tag name="kernel.cache_clearer" />
9+
<service id="cache.app" parent="cache.adapter.filesystem">
10+
<tag name="cache.pool" />
1111
</service>
1212

13-
<service id="cache.pool.app" parent="cache.adapter.shared">
13+
<service id="cache.system" parent="cache.adapter.filesystem">
1414
<tag name="cache.pool" />
1515
</service>
1616

17-
<service id="cache.pool.validator" parent="cache.adapter.local" public="false">
17+
<service id="cache.validator" parent="cache.system" public="false">
1818
<tag name="cache.pool" />
1919
</service>
2020

21-
<service id="cache.pool.serializer" parent="cache.adapter.local" public="false">
21+
<service id="cache.serializer" parent="cache.system" public="false">
2222
<tag name="cache.pool" />
2323
</service>
2424

25-
<service id="cache.adapter.local" alias="cache.adapter.filesystem" />
26-
<service id="cache.adapter.shared" alias="cache.adapter.filesystem" />
27-
2825
<service id="cache.adapter.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" abstract="true">
29-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
26+
<tag name="cache.pool" clearer="cache.default_clearer" />
3027
<tag name="monolog.logger" channel="cache" />
3128
<argument /> <!-- namespace -->
3229
<argument /> <!-- default lifetime -->
@@ -36,7 +33,7 @@
3633
</service>
3734

3835
<service id="cache.adapter.doctrine" class="Symfony\Component\Cache\Adapter\DoctrineAdapter" abstract="true">
39-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
36+
<tag name="cache.pool" provider="cache.default_doctrine_provider" clearer="cache.default_clearer" />
4037
<tag name="monolog.logger" channel="cache" />
4138
<argument /> <!-- Doctrine provider service -->
4239
<argument /> <!-- namespace -->
@@ -47,7 +44,7 @@
4744
</service>
4845

4946
<service id="cache.adapter.filesystem" class="Symfony\Component\Cache\Adapter\FilesystemAdapter" abstract="true">
50-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
47+
<tag name="cache.pool" clearer="cache.default_clearer" />
5148
<tag name="monolog.logger" channel="cache" />
5249
<argument /> <!-- namespace -->
5350
<argument /> <!-- default lifetime -->
@@ -58,22 +55,26 @@
5855
</service>
5956

6057
<service id="cache.adapter.psr6" class="Symfony\Component\Cache\Adapter\ProxyAdapter" abstract="true">
61-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
58+
<tag name="cache.pool" provider="cache.default_psr6_provider" clearer="cache.default_clearer" />
6259
<argument /> <!-- PSR-6 provider service -->
6360
<argument /> <!-- namespace -->
6461
<argument /> <!-- default lifetime -->
6562
</service>
6663

67-
<service id="cache.adapter.redis" class="Symfony\Component\Cache\Adapter\RedisAdapter" abstract="true">
68-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
64+
<service id="cache.adapter.redis" class="Symfony\Component\Cache\Adapter\RedisAdapter" abstract="true" lazy="true">
65+
<tag name="cache.pool" provider="cache.default_redis_provider" clearer="cache.default_clearer" />
6966
<tag name="monolog.logger" channel="cache" />
70-
<argument /> <!-- Redis connection object -->
67+
<argument /> <!-- Redis connection service -->
7168
<argument /> <!-- namespace -->
7269
<argument /> <!-- default lifetime -->
7370
<call method="setLogger">
7471
<argument type="service" id="logger" on-invalid="ignore" />
7572
</call>
7673
</service>
7774

75+
<service id="cache.default_clearer" class="Symfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer" public="false">
76+
<tag name="kernel.cache_clearer" />
77+
</service>
78+
7879
</services>
7980
</container>

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/schema/symfony-1.0.xsd
+11-12Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,23 @@
205205
</xsd:complexType>
206206

207207
<xsd:complexType name="cache">
208-
<xsd:choice minOccurs="1" maxOccurs="unbounded">
209-
<xsd:element name="adapter" type="cache_adapter" />
210-
<xsd:element name="pool" type="cache_pool" />
211-
</xsd:choice>
212-
</xsd:complexType>
213-
214-
<xsd:complexType name="cache_adapter">
215-
<xsd:attribute name="name" type="xsd:string" use="required" />
216-
<xsd:attribute name="parent" type="xsd:string" />
217-
<xsd:attribute name="default-lifetime" type="xsd:integer" />
218-
<xsd:attribute name="provider" type="xsd:string" />
219-
<xsd:attribute name="clearer" type="xsd:string" />
208+
<xsd:sequence>
209+
<xsd:element name="app" type="xsd:string" minOccurs="0" maxOccurs="1" />
210+
<xsd:element name="system" type="xsd:string" minOccurs="0" maxOccurs="1" />
211+
<xsd:element name="directory" type="xsd:string" minOccurs="0" maxOccurs="1" />
212+
<xsd:element name="default-doctrine-provider" type="xsd:string" minOccurs="0" maxOccurs="1" />
213+
<xsd:element name="default-psr6-provider" type="xsd:string" minOccurs="0" maxOccurs="1" />
214+
<xsd:element name="default-redis-provider" type="xsd:string" minOccurs="0" maxOccurs="1" />
215+
<xsd:element name="pool" type="cache_pool" minOccurs="0" maxOccurs="unbounded" />
216+
</xsd:sequence>
220217
</xsd:complexType>
221218

222219
<xsd:complexType name="cache_pool">
223220
<xsd:attribute name="name" type="xsd:string" use="required" />
224221
<xsd:attribute name="adapter" type="xsd:string" />
225222
<xsd:attribute name="public" type="xsd:boolean" />
226223
<xsd:attribute name="default-lifetime" type="xsd:integer" />
224+
<xsd:attribute name="provider" type="xsd:string" />
225+
<xsd:attribute name="clearer" type="xsd:string" />
227226
</xsd:complexType>
228227
</xsd:schema>

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Resources/config/validator.xml
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<service id="validator.mapping.class_metadata_factory" alias="validator" public="false" />
3030

3131
<service id="validator.mapping.cache.symfony" class="Symfony\Component\Validator\Mapping\Cache\Psr6Cache" public="false">
32-
<argument type="service" id="cache.pool.validator" />
32+
<argument type="service" id="cache.validator" />
3333
</service>
3434

3535
<service id="validator.mapping.cache.doctrine.apc" class="Symfony\Component\Validator\Mapping\Cache\DoctrineCache" public="false">

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/ConfigurationTest.php
+4-1Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,11 @@ protected static function getBundleDefaultConfig()
267267
'packages' => array(),
268268
),
269269
'cache' => array(
270-
'adapters' => array(),
271270
'pools' => array(),
271+
'app' => 'cache.adapter.filesystem',
272+
'system' => 'cache.adapter.filesystem',
273+
'directory' => '%kernel.cache_dir%/pools',
274+
'default_redis_provider' => 'redis://localhost',
272275
),
273276
);
274277
}

‎src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/cache.php

Copy file name to clipboardExpand all lines: src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/cache.php
+7-16Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,35 +2,26 @@
22

33
$container->loadFromExtension('framework', array(
44
'cache' => array(
5-
'adapters' => array(
6-
'foo' => array(
7-
'parent' => 'cache.adapter.filesystem',
8-
'default_lifetime' => 30,
9-
),
10-
'app_redis' => array(
11-
'parent' => 'cache.adapter.redis',
12-
'provider' => 'app.redis_connection',
13-
'default_lifetime' => 30,
14-
),
15-
),
165
'pools' => array(
17-
'foo' => array(
6+
'cache.foo' => array(
187
'adapter' => 'cache.adapter.apcu',
198
'default_lifetime' => 30,
209
),
21-
'bar' => array(
10+
'cache.bar' => array(
2211
'adapter' => 'cache.adapter.doctrine',
2312
'default_lifetime' => 5,
13+
'provider' => 'app.doctrine_cache_provider',
2414
),
25-
'baz' => array(
15+
'cache.baz' => array(
2616
'adapter' => 'cache.adapter.filesystem',
2717
'default_lifetime' => 7,
2818
),
29-
'foobar' => array(
19+
'cache.foobar' => array(
3020
'adapter' => 'cache.adapter.psr6',
3121
'default_lifetime' => 10,
22+
'provider' => 'app.cache_pool',
3223
),
33-
'def' => array(
24+
'cache.def' => array(
3425
'default_lifetime' => 11,
3526
),
3627
),

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.