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

Commit8218bb8

Browse files
committed
Add cache.adapter.redis_tag_aware to use RedisCacheAwareAdapter
1 parent3864521 commit8218bb8

File tree

7 files changed

+105
-78
lines changed

7 files changed

+105
-78
lines changed

‎src/Symfony/Bundle/FrameworkBundle/CHANGELOG.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ CHANGELOG
1818
* Made`BrowserKitAssertionsTrait` report the original error message in case of a failure
1919
* Added ability for`config:dump-reference` and`debug:config` to dump and debug kernel container extension configuration.
2020
* Deprecated`session.attribute_bag` service and`session.flash_bag` service.
21-
*Wire`RedisTagAwareAdapter` for pools usings tags and Redis adapter
21+
*Add`cache.adapter.redis_tag_aware` in order to use`RedisCacheAwareAdapter`
2222

2323
5.0.0
2424
-----

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

Lines changed: 23 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
useSymfony\Component\Cache\Adapter\AdapterInterface;
3131
useSymfony\Component\Cache\Adapter\ArrayAdapter;
3232
useSymfony\Component\Cache\Adapter\ChainAdapter;
33-
useSymfony\Component\Cache\Adapter\RedisTagAwareAdapter;
3433
useSymfony\Component\Cache\Adapter\TagAwareAdapter;
3534
useSymfony\Component\Cache\DependencyInjection\CachePoolPass;
3635
useSymfony\Component\Cache\Marshaller\DefaultMarshaller;
@@ -1838,8 +1837,11 @@ private function registerCacheConfiguration(array $config, ContainerBuilder $con
18381837
foreach ($config['pools']as$name =>$pool) {
18391838
$pool['adapters'] =$pool['adapters'] ?: ['cache.app'];
18401839

1840+
$isRedisTagAware = ['cache.adapter.redis_tag_aware'] ===$pool['adapters'];
18411841
foreach ($pool['adapters']as$provider =>$adapter) {
1842-
if ($config['pools'][$adapter]['tags'] ??false) {
1842+
if (($config['pools'][$adapter]['adapters'] ??null) === ['cache.adapter.redis_tag_aware']) {
1843+
$isRedisTagAware =true;
1844+
}elseif ($config['pools'][$adapter]['tags'] ??false) {
18431845
$pool['adapters'][$provider] =$adapter ='.'.$adapter.'.inner';
18441846
}
18451847
}
@@ -1854,43 +1856,33 @@ private function registerCacheConfiguration(array $config, ContainerBuilder $con
18541856
$pool['reset'] ='reset';
18551857
}
18561858

1857-
if ($pool['tags']) {
1859+
if ($isRedisTagAware) {
1860+
$tagAwareId =$name;
1861+
$container->setAlias('.'.$name.'.inner',$name);
1862+
}elseif ($pool['tags']) {
18581863
if (true !==$pool['tags'] && ($config['pools'][$pool['tags']]['tags'] ??false)) {
18591864
$pool['tags'] ='.'.$pool['tags'].'.inner';
18601865
}
1866+
$container->register($name, TagAwareAdapter::class)
1867+
->addArgument(newReference('.'.$name.'.inner'))
1868+
->addArgument(true !==$pool['tags'] ?newReference($pool['tags']) :null)
1869+
->setPublic($pool['public'])
1870+
;
18611871

1862-
$isRedis =$definitioninstanceof ChildDefinition &&'cache.adapter.redis' ===$definition->getParent();
1863-
if (true ===$pool['tags'] &&$isRedis) {
1864-
$definition =newDefinition(RedisTagAwareAdapter::class, [null,null,0,null]);
1865-
if (!isset($pool['provider']) || !$pool['provider']) {
1866-
$pool['provider'] ='cache.default_redis_provider';
1867-
}
1868-
$underlyingAdapterName =$name;
1869-
}else {
1870-
$container->register($name, TagAwareAdapter::class)
1871-
->addArgument(newReference('.'.$name.'.inner'))
1872-
->addArgument(true !==$pool['tags'] ?newReference($pool['tags']) :null)
1873-
->setPublic($pool['public'])
1874-
;
1875-
$underlyingAdapterName ='.'.$name.'.inner';
1876-
}
1877-
1878-
$pool['name'] =$name;
1872+
$pool['name'] =$tagAwareId =$name;
18791873
$pool['public'] =false;
1880-
$name =$underlyingAdapterName;
1881-
1882-
if (!\in_array($pool['name'], ['cache.app','cache.system'],true)) {
1883-
$container->registerAliasForArgument($pool['name'], TagAwareCacheInterface::class);
1884-
$container->registerAliasForArgument($name, CacheInterface::class,$pool['name']);
1885-
$container->registerAliasForArgument($name, CacheItemPoolInterface::class,$pool['name']);
1886-
}
1874+
$name ='.'.$name.'.inner';
18871875
}elseif (!\in_array($name, ['cache.app','cache.system'],true)) {
1888-
$container->register('.'.$name.'.taggable', TagAwareAdapter::class)
1876+
$tagAwareId ='.'.$name.'.taggable';
1877+
$container->register($tagAwareId, TagAwareAdapter::class)
18891878
->addArgument(newReference($name))
18901879
;
1891-
$container->registerAliasForArgument('.'.$name.'.taggable', TagAwareCacheInterface::class,$name);
1892-
$container->registerAliasForArgument($name, CacheInterface::class);
1893-
$container->registerAliasForArgument($name, CacheItemPoolInterface::class);
1880+
}
1881+
1882+
if (!\in_array($name, ['cache.app','cache.system'],true)) {
1883+
$container->registerAliasForArgument($tagAwareId, TagAwareCacheInterface::class,$pool['name'] ??$name);
1884+
$container->registerAliasForArgument($name, CacheInterface::class,$pool['name'] ??$name);
1885+
$container->registerAliasForArgument($name, CacheItemPoolInterface::class,$pool['name'] ??$name);
18941886
}
18951887

18961888
$definition->setPublic($pool['public']);

‎src/Symfony/Bundle/FrameworkBundle/Resources/config/cache.php‎

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
useSymfony\Component\Cache\Adapter\PdoAdapter;
2323
useSymfony\Component\Cache\Adapter\ProxyAdapter;
2424
useSymfony\Component\Cache\Adapter\RedisAdapter;
25+
useSymfony\Component\Cache\Adapter\RedisTagAwareAdapter;
2526
useSymfony\Component\Cache\Adapter\TagAwareAdapter;
2627
useSymfony\Component\Cache\Marshaller\DefaultMarshaller;
2728
useSymfony\Component\HttpKernel\CacheClearer\Psr6CacheClearer;
@@ -148,6 +149,22 @@
148149
])
149150
->tag('monolog.logger', ['channel' =>'cache'])
150151

152+
->set('cache.adapter.redis_tag_aware', RedisTagAwareAdapter::class)
153+
->abstract()
154+
->args([
155+
abstract_arg('Redis connection service'),
156+
abstract_arg('Namespace'),
157+
0,// default lifetime
158+
service('cache.default_marshaller')->ignoreOnInvalid(),
159+
])
160+
->call('setLogger', [service('logger')->ignoreOnInvalid()])
161+
->tag('cache.pool', [
162+
'provider' =>'cache.default_redis_provider',
163+
'clearer' =>'cache.default_clearer',
164+
'reset' =>'reset',
165+
])
166+
->tag('monolog.logger', ['channel' =>'cache'])
167+
151168
->set('cache.adapter.memcached', MemcachedAdapter::class)
152169
->abstract()
153170
->args([

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,26 @@
3232
'redis://foo' =>'cache.adapter.redis',
3333
],
3434
],
35-
'cache.tag' => [
35+
'cache.redis_tag_aware.foo' => [
36+
'adapter' =>'cache.adapter.redis_tag_aware',
37+
],
38+
'cache.redis_tag_aware.foo2' => [
3639
'tags' =>true,
37-
'adapter' =>'cache.adapter.apcu',
40+
'adapter' =>'cache.adapter.redis_tag_aware',
3841
],
39-
'cache.redis.foo' => [
40-
'adapter' =>'cache.adapter.redis',
42+
'cache.redis_tag_aware.bar' => [
43+
'adapter' =>'cache.redis_tag_aware.foo',
4144
],
42-
'cache.redis.bar' => [
45+
'cache.redis_tag_aware.bar2' => [
4346
'tags' =>true,
44-
'adapter' =>'cache.adapter.redis',
47+
'adapter' =>'cache.redis_tag_aware.foo',
4548
],
46-
'cache.redis.baz' => [
47-
'tags' =>'cache.adapter.redis',
48-
'adapter' =>'cache.adapter.redis',
49+
'cache.redis_tag_aware.baz' => [
50+
'adapter' =>'cache.redis_tag_aware.foo2',
51+
],
52+
'cache.redis_tag_aware.baz2' => [
53+
'tags' =>true,
54+
'adapter' =>'cache.redis_tag_aware.foo2',
4955
],
5056
],
5157
],

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

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -17,18 +17,12 @@
1717
<framework:adaptername="cache.adapter.filesystem" />
1818
<framework:adaptername="cache.adapter.redis"provider="redis://foo" />
1919
</framework:pool>
20-
<framework:poolname="cache.tag"tags="true">
21-
<framework:adaptername="cache.adapter.apcu" />
22-
</framework:pool>
23-
<framework:poolname="cache.redis.foo">
24-
<framework:adaptername="cache.adapter.redis" />
25-
</framework:pool>
26-
<framework:poolname="cache.redis.bar"tags="true">
27-
<framework:adaptername="cache.adapter.redis" />
28-
</framework:pool>
29-
<framework:poolname="cache.redis.baz"tags="cache.adapter.redis">
30-
<framework:adaptername="cache.adapter.redis" />
31-
</framework:pool>
20+
<framework:poolname="cache.redis_tag_aware.foo"adapter="cache.adapter.redis_tag_aware" />
21+
<framework:poolname="cache.redis_tag_aware.foo2"tags="true"adapter="cache.adapter.redis_tag_aware" />
22+
<framework:poolname="cache.redis_tag_aware.bar"adapter="cache.redis_tag_aware.foo" />
23+
<framework:poolname="cache.redis_tag_aware.bar2"tags="true"adapter="cache.redis_tag_aware.foo" />
24+
<framework:poolname="cache.redis_tag_aware.baz"adapter="cache.redis_tag_aware.foo2" />
25+
<framework:poolname="cache.redis_tag_aware.baz2"tags="true"adapter="cache.redis_tag_aware.foo2" />
3226
</framework:cache>
3327
</framework:config>
3428
</container>

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

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@ framework:
2323
-cache.adapter.array
2424
-cache.adapter.filesystem
2525
-{name: cache.adapter.redis, provider: 'redis://foo'}
26-
cache.tag:
26+
cache.redis_tag_aware.foo:
27+
adapter:cache.adapter.redis_tag_aware
28+
cache.redis_tag_aware.foo2:
2729
tags:true
28-
adapter:cache.adapter.apcu
29-
cache.redis.foo:
30-
adapter:cache.adapter.redis
31-
cache.redis.bar:
30+
adapter:cache.adapter.redis_tag_aware
31+
cache.redis_tag_aware.bar:
32+
adapter:cache.redis_tag_aware.foo
33+
cache.redis_tag_aware.bar2:
34+
tags:true
35+
adapter:cache.redis_tag_aware.foo
36+
cache.redis_tag_aware.baz:
37+
adapter:cache.redis_tag_aware.foo2
38+
cache.redis_tag_aware.baz2:
3239
tags:true
33-
adapter:cache.adapter.redis
34-
cache.redis.baz:
35-
tags:cache.adapter.redis
36-
adapter:cache.adapter.redis
40+
adapter:cache.redis_tag_aware.foo2

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

Lines changed: 30 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
namespaceSymfony\Bundle\FrameworkBundle\Tests\DependencyInjection;
1313

1414
useDoctrine\Common\Annotations\Annotation;
15+
usePsr\Cache\CacheItemPoolInterface;
1516
usePsr\Log\LoggerAwareInterface;
1617
useSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\AddAnnotationsCachedReaderPass;
1718
useSymfony\Bundle\FrameworkBundle\DependencyInjection\FrameworkExtension;
@@ -27,7 +28,6 @@
2728
useSymfony\Component\Cache\Adapter\ProxyAdapter;
2829
useSymfony\Component\Cache\Adapter\RedisAdapter;
2930
useSymfony\Component\Cache\Adapter\RedisTagAwareAdapter;
30-
useSymfony\Component\Cache\Adapter\TagAwareAdapter;
3131
useSymfony\Component\Cache\DependencyInjection\CachePoolPass;
3232
useSymfony\Component\DependencyInjection\ChildDefinition;
3333
useSymfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
@@ -56,6 +56,7 @@
5656
useSymfony\Component\Validator\DependencyInjection\AddConstraintValidatorsPass;
5757
useSymfony\Component\Validator\Mapping\Loader\PropertyInfoLoader;
5858
useSymfony\Component\Workflow;
59+
useSymfony\Contracts\Cache\CacheInterface;
5960
useSymfony\Contracts\Cache\TagAwareCacheInterface;
6061

6162
abstractclass FrameworkExtensionTestextends TestCase
@@ -1284,25 +1285,38 @@ public function testCachePoolServices()
12841285
$this->assertEquals($expected,$chain->getArguments());
12851286
}
12861287

1287-
publicfunctiontestCacheTagAwareAdapters():void
1288+
publicfunctiontestRedisTagAwareAdapter():void
12881289
{
12891290
$container =$this->createContainerFromFile('cache', [],true);
12901291

1291-
$data = [
1292-
'cacheFoo' => TagAwareAdapter::class,
1293-
'cacheTag' => TagAwareAdapter::class,
1294-
'cacheChain' => TagAwareAdapter::class,
1295-
'cacheRedisFoo' => TagAwareAdapter::class,
1296-
'cacheRedisBar' => RedisTagAwareAdapter::class,
1297-
'cacheRedisBaz' => TagAwareAdapter::class,
1298-
];
1292+
$aliasesForArguments = [];
1293+
foreach ([
1294+
'cacheRedisTagAwareFoo',
1295+
'cacheRedisTagAwareFoo2',
1296+
'cacheRedisTagAwareBar',
1297+
'cacheRedisTagAwareBar2',
1298+
'cacheRedisTagAwareBaz',
1299+
'cacheRedisTagAwareBaz2',
1300+
]as$argumentName) {
1301+
$aliasesForArguments[] =sprintf('%s $%s', TagAwareCacheInterface::class,$argumentName);
1302+
$aliasesForArguments[] =sprintf('%s $%s', CacheInterface::class,$argumentName);
1303+
$aliasesForArguments[] =sprintf('%s $%s', CacheItemPoolInterface::class,$argumentName);
1304+
}
12991305

1300-
foreach ($dataas$varName =>$expectedAdapter) {
1301-
$aliasForArgument =$container->getAlias(sprintf('%s $%s', TagAwareCacheInterface::class,$varName));
1302-
$this->assertNotNull($aliasForArgument);
1303-
$taggableDef =$container->getDefinition((string)$aliasForArgument);
1304-
$this->assertNotNull($taggableDef);
1305-
$this->assertSame($expectedAdapter,$taggableDef->getClass());
1306+
foreach ($aliasesForArgumentsas$aliasForArgumentStr) {
1307+
$aliasForArgument =$container->getAlias($aliasForArgumentStr);
1308+
$this->assertNotNull($aliasForArgument,sprintf("No alias found for '%s'",$aliasForArgumentStr));
1309+
$def =$container->getDefinition((string)$aliasForArgument);
1310+
$this->assertInstanceOf(ChildDefinition::class,$def,sprintf("No definition found for '%s'",$aliasForArgumentStr));
1311+
$defParent =$container->getDefinition($def->getParent());
1312+
if ($defParentinstanceof ChildDefinition) {
1313+
$defParent =$container->getDefinition($defParent->getParent());
1314+
}
1315+
$this->assertSame(
1316+
RedisTagAwareAdapter::class,
1317+
$defParent->getClass(),
1318+
sprintf("'%s' is not %s",$aliasForArgumentStr, RedisTagAwareAdapter::class)
1319+
);
13061320
}
13071321
}
13081322

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp