Movatterモバイル変換


[0]ホーム

URL:


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

Sign up
Appearance settings

Commit893afda

Browse files
[FrameworkBundle] Simplify config for app/system/pool caches
1 parent80a5508 commit893afda

File tree

17 files changed

+187
-188
lines changed

17 files changed

+187
-188
lines changed

‎UPGRADE-3.1.md‎

Lines 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. Configurea cache pool
97-
called`serializer` under`framework.cache.pools` instead.
96+
* The`framework.serializer.cache` option has been deprecated. Configurethe
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‎

Lines 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. Configurea cache pool
84-
called`serializer` under`framework.cache.pools` instead.
83+
* The`framework.serializer.cache` option has been removed. Configurethe
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‎

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,10 @@
1111

1212
namespaceSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler;
1313

14+
useSymfony\Component\Cache\Adapter\RedisAdapter;
1415
useSymfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
1516
useSymfony\Component\DependencyInjection\ContainerBuilder;
17+
useSymfony\Component\DependencyInjection\Definition;
1618
useSymfony\Component\DependencyInjection\DefinitionDecorator;
1719
useSymfony\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'] =newReference($tags[0]['provider']);
65+
if (isset($tags[0]['provider'])) {
66+
$tags[0]['provider'] =newReference(static::getServiceProvider($container,$tags[0]['provider']));
6567
}
6668
$i =0;
6769
foreach ($attributesas$attr) {
@@ -84,4 +86,24 @@ private function getNamespace($namespaceSuffix, $id)
8486
{
8587
returnsubstr(str_replace('/','-',base64_encode(md5($id.$namespaceSuffix,true))),0,10);
8688
}
89+
90+
/**
91+
* @internal
92+
*/
93+
publicstaticfunctiongetServiceProvider(ContainerBuilder$container,$name)
94+
{
95+
if (0 ===strpos($name,'redis://')) {
96+
$dsn =$name;
97+
98+
if (!$container->hasDefinition($name =md5($dsn))) {
99+
$definition =newDefinition(\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‎

Lines 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 specifiedparentadapter 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) {returnisset($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‎

Lines 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
newReference('serializer.mapping.cache_class_metadata_factory.inner'),
1002-
newReference('cache.pool.serializer'),
1002+
newReference('cache.serializer'),
10031003
)
10041004
);
10051005
$cacheMetadataFactory->setPublic(false);
@@ -1037,22 +1037,26 @@ private function registerPropertyInfoConfiguration(array $config, ContainerBuild
10371037

10381038
privatefunctionregisterCacheConfiguration(array$config,ContainerBuilder$container,XmlFileLoader$loader)
10391039
{
1040-
foreach ($config['adapters']as$name =>$adapterConfig) {
1041-
$adapterDefinition =newDefinitionDecorator($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 =newDefinitionDecorator($pool['adapter']);
1055+
$definition->setPublic($pool['public']);
1056+
unset($pool['adapter'],$pool['public']);
10481057

1049-
foreach ($config['pools']as$name =>$poolConfig) {
1050-
$poolDefinition =newDefinitionDecorator($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‎

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,24 @@
66

77
<services>
88

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

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

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

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

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

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

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

6057
<serviceid="cache.adapter.psr6"class="Symfony\Component\Cache\Adapter\ProxyAdapter"abstract="true">
61-
<tagname="cache.pool"clearer="cache.default_pools_clearer" />
58+
<tagname="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-
<serviceid="cache.adapter.redis"class="Symfony\Component\Cache\Adapter\RedisAdapter"abstract="true">
68-
<tagname="cache.pool"clearer="cache.default_pools_clearer" />
64+
<serviceid="cache.adapter.redis"class="Symfony\Component\Cache\Adapter\RedisAdapter"abstract="true"lazy="true">
65+
<tagname="cache.pool"provider="cache.default_redis_provider"clearer="cache.default_clearer" />
6966
<tagname="monolog.logger"channel="cache" />
70-
<argument /><!-- Redis connectionobject-->
67+
<argument /><!-- Redis connectionservice-->
7168
<argument /><!-- namespace-->
7269
<argument /><!-- default lifetime-->
7370
<callmethod="setLogger">
7471
<argumenttype="service"id="logger"on-invalid="ignore" />
7572
</call>
7673
</service>
7774

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

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

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -205,24 +205,23 @@
205205
</xsd:complexType>
206206

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

222219
<xsd:complexTypename="cache_pool">
223220
<xsd:attributename="name"type="xsd:string"use="required" />
224221
<xsd:attributename="adapter"type="xsd:string" />
225222
<xsd:attributename="public"type="xsd:boolean" />
226223
<xsd:attributename="default-lifetime"type="xsd:integer" />
224+
<xsd:attributename="provider"type="xsd:string" />
225+
<xsd:attributename="clearer"type="xsd:string" />
227226
</xsd:complexType>
228227
</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
<serviceid="validator.mapping.class_metadata_factory"alias="validator"public="false" />
3030

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

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

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

Lines 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‎

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

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp