Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit eeb561e

Browse files
[FrameworkBundle] Simplify config for app/system/pool caches
1 parent b9cb163 commit eeb561e

File tree

17 files changed

+152
-178
lines changed

17 files changed

+152
-178
lines changed

UPGRADE-3.1.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ FrameworkBundle
9090
cache service. If you are using `serializer.mapping.cache.apc`, use
9191
`serializer.mapping.cache.doctrine.apc` instead.
9292

93-
* The `framework.serializer.cache` option has been deprecated. Configure a cache pool
94-
called `serializer` under `framework.cache.pools` instead.
93+
* The `framework.serializer.cache` option has been deprecated. Configure the
94+
`cache.serializer` service under `framework.cache.pools` instead.
9595

9696
Before:
9797

@@ -107,7 +107,7 @@ FrameworkBundle
107107
framework:
108108
cache:
109109
pools:
110-
serializer:
110+
cache.serializer:
111111
adapter: cache.adapter.apcu
112112

113113
HttpKernel

UPGRADE-4.0.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,8 +78,8 @@ FrameworkBundle
7878
* The service `serializer.mapping.cache.apc` has been removed; use
7979
`serializer.mapping.cache.doctrine.apc` instead.
8080

81-
* The `framework.serializer.cache` option has been removed. Configure a cache pool
82-
called `serializer` under `framework.cache.pools` instead.
81+
* The `framework.serializer.cache` option has been removed. Configure the
82+
`cache.serializer` service under `framework.cache.pools` instead.
8383

8484
Before:
8585

@@ -95,7 +95,7 @@ FrameworkBundle
9595
framework:
9696
cache:
9797
pools:
98-
serializer:
98+
cache.serializer:
9999
adapter: cache.adapter.apcu
100100
```
101101

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public function process(ContainerBuilder $container)
6060
}
6161
unset($tags[0]['clearer']);
6262

63-
if (isset($tags[0]['provider']) && is_string($tags[0]['provider'])) {
63+
if (isset($tags[0]['provider'])) {
6464
$tags[0]['provider'] = new Reference($tags[0]['provider']);
6565
}
6666
$i = 0;

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

Lines changed: 18 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -557,35 +557,34 @@ 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('redis_dsn')
570+
->defaultValue('redis://localhost')
571+
->end()
572+
->arrayNode('pools')
563573
->useAttributeAsKey('name')
564574
->prototype('array')
565575
->children()
566-
->scalarNode('parent')
567-
->isRequired()
568-
->info('The parent cache adapter service.')
569-
->end()
576+
->scalarNode('adapter')->defaultValue('cache.app')->end()
577+
->booleanNode('public')->defaultFalse()->end()
570578
->integerNode('default_lifetime')->end()
571579
->scalarNode('provider')
572-
->info('The service name to use as provider when the specified parent adapter needs one.')
580+
->info('The service name to use as provider when the specified adapter needs one.')
573581
->end()
574582
->scalarNode('clearer')->defaultValue('cache.default_pools_clearer')->end()
575583
->end()
576584
->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()
585+
->validate()
586+
->ifTrue(function ($v) { return isset($v['cache.app']) || isset($v['cache.system']); })
587+
->thenInvalid('"cache.app" and "cache.system" are reserved names')
589588
->end()
590589
->end()
591590
->end()

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

Lines changed: 17 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,23 @@ 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.default_redis_connection')
1041+
->replaceArgument(0, $config['redis_dsn'])
1042+
;
10441043

1045-
$adapterDefinition->addTag('cache.pool', $adapterConfig);
1046-
$container->setDefinition('cache.adapter.'.$name, $adapterDefinition);
1044+
foreach (array('app', 'system') as $name) {
1045+
$config['pools']['cache.'.$name] = array(
1046+
'adapter' => $config[$name],
1047+
'public' => true,
1048+
);
10471049
}
1050+
foreach ($config['pools'] as $name => $pool) {
1051+
$definition = new DefinitionDecorator($pool['adapter']);
1052+
$definition->setPublic($pool['public']);
1053+
unset($pool['adapter'], $pool['public']);
10481054

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);
1055+
$definition->addTag('cache.pool', $pool);
1056+
$container->setDefinition($name, $definition);
10561057
}
10571058

10581059
$this->addClassesToCompile(array(

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

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,26 @@
1010
<tag name="kernel.cache_clearer" />
1111
</service>
1212

13-
<service id="cache.pool.app" parent="cache.adapter.shared">
13+
<service id="cache.default_redis_connection" class="Redis" public="false">
14+
<factory class="Symfony\Component\Cache\Adapter\RedisAdapter" method="createConnection" />
15+
<argument />
16+
</service>
17+
18+
<service id="cache.app" parent="cache.adapter.filesystem">
1419
<tag name="cache.pool" />
1520
</service>
1621

17-
<service id="cache.pool.validator" parent="cache.adapter.local" public="false">
22+
<service id="cache.system" parent="cache.adapter.filesystem">
1823
<tag name="cache.pool" />
1924
</service>
2025

21-
<service id="cache.pool.serializer" parent="cache.adapter.local" public="false">
26+
<service id="cache.validator" parent="cache.system" public="false">
2227
<tag name="cache.pool" />
2328
</service>
2429

25-
<service id="cache.adapter.local" alias="cache.adapter.filesystem" />
26-
<service id="cache.adapter.shared" alias="cache.adapter.filesystem" />
30+
<service id="cache.serializer" parent="cache.system" public="false">
31+
<tag name="cache.pool" />
32+
</service>
2733

2834
<service id="cache.adapter.apcu" class="Symfony\Component\Cache\Adapter\ApcuAdapter" abstract="true">
2935
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
@@ -65,9 +71,9 @@
6571
</service>
6672

6773
<service id="cache.adapter.redis" class="Symfony\Component\Cache\Adapter\RedisAdapter" abstract="true">
68-
<tag name="cache.pool" clearer="cache.default_pools_clearer" />
74+
<tag name="cache.pool" provider="cache.default_redis_connection" clearer="cache.default_pools_clearer" />
6975
<tag name="monolog.logger" channel="cache" />
70-
<argument /> <!-- Redis connection object -->
76+
<argument /> <!-- Redis connection -->
7177
<argument /> <!-- namespace -->
7278
<argument /> <!-- default lifetime -->
7379
<call method="setLogger">

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

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,20 @@
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="redis_dsn" type="xsd:string" minOccurs="0" maxOccurs="1" />
212+
<xsd:element name="pool" type="cache_pool" minOccurs="0" maxOccurs="unbounded" />
213+
</xsd:sequence>
220214
</xsd:complexType>
221215

222216
<xsd:complexType name="cache_pool">
223217
<xsd:attribute name="name" type="xsd:string" use="required" />
224218
<xsd:attribute name="adapter" type="xsd:string" />
225219
<xsd:attribute name="public" type="xsd:boolean" />
226220
<xsd:attribute name="default-lifetime" type="xsd:integer" />
221+
<xsd:attribute name="provider" type="xsd:string" />
222+
<xsd:attribute name="clearer" type="xsd:string" />
227223
</xsd:complexType>
228224
</xsd:schema>

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

Lines 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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,10 @@ 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+
'redis_dsn' => 'redis://localhost',
272274
),
273275
);
274276
}

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

Lines 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
),

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/cache.xml

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,11 @@
77

88
<framework:config>
99
<framework:cache>
10-
<framework:adapter name="foo" parent="cache.adapter.filesystem" default-lifetime="30" />
11-
<framework:adapter name="app_redis" parent="cache.adapter.redis" provider="app.redis_connection" default-lifetime="30" />
12-
<framework:pool name="foo" adapter="cache.adapter.apcu" default-lifetime="30" />
13-
<framework:pool name="bar" adapter="cache.adapter.doctrine" default-lifetime="5" />
14-
<framework:pool name="baz" adapter="cache.adapter.filesystem" default-lifetime="7" />
15-
<framework:pool name="foobar" adapter="cache.adapter.psr6" default-lifetime="10" />
16-
<framework:pool name="def" default-lifetime="11" />
10+
<framework:pool name="cache.foo" adapter="cache.adapter.apcu" default-lifetime="30" />
11+
<framework:pool name="cache.bar" adapter="cache.adapter.doctrine" default-lifetime="5" provider="app.doctrine_cache_provider" />
12+
<framework:pool name="cache.baz" adapter="cache.adapter.filesystem" default-lifetime="7" />
13+
<framework:pool name="cache.foobar" adapter="cache.adapter.psr6" default-lifetime="10" provider="app.cache_pool" />
14+
<framework:pool name="cache.def" default-lifetime="11" />
1715
</framework:cache>
1816
</framework:config>
1917
</container>
Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,19 @@
11
framework:
22
cache:
3-
adapters:
4-
foo:
5-
parent: cache.adapter.filesystem
6-
default_lifetime: 30
7-
app_redis:
8-
parent: cache.adapter.redis
9-
provider: app.redis_connection
10-
default_lifetime: 30
113
pools:
12-
foo:
4+
cache.foo:
135
adapter: cache.adapter.apcu
146
default_lifetime: 30
15-
bar:
7+
cache.bar:
168
adapter: cache.adapter.doctrine
179
default_lifetime: 5
18-
baz:
10+
provider: app.doctrine_cache_provider
11+
cache.baz:
1912
adapter: cache.adapter.filesystem
2013
default_lifetime: 7
21-
foobar:
14+
cache.foobar:
2215
adapter: cache.adapter.psr6
2316
default_lifetime: 10
24-
def:
17+
provider: app.cache_pool
18+
cache.def:
2519
default_lifetime: 11

0 commit comments

Comments
 (0)