diff --git a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
index 83bb23f2bb09f..87a173faca291 100644
--- a/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
+++ b/src/Symfony/Bundle/FrameworkBundle/DependencyInjection/FrameworkExtension.php
@@ -2008,7 +2008,7 @@ private function registerLockConfiguration(array $config, ContainerBuilder $cont
$storeDefinitions = [];
foreach ($resourceStores as $resourceStore) {
$storeDsn = $container->resolveEnvPlaceholders($resourceStore, null, $usedEnvs);
- if (!$usedEnvs && !str_contains($resourceStore, '://')) {
+ if (!$usedEnvs && !str_contains($resourceStore, ':') && !\in_array($resourceStore, ['flock', 'semaphore', 'in-memory'], true)) {
$resourceStore = new Reference($resourceStore);
}
$storeDefinition = new Definition(PersistingStoreInterface::class);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/lock_named.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/lock_named.php
index de8a8f49561fd..cbfead83000a3 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/lock_named.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/php/lock_named.php
@@ -12,5 +12,7 @@
'bar' => 'flock',
'baz' => ['semaphore', 'flock'],
'qux' => '%env(REDIS_DSN)%',
+ 'corge' => 'in-memory',
+ 'grault' => 'mysql:host=localhost;dbname=test',
],
]);
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/lock_named.xml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/lock_named.xml
index 02659713e49bf..7c48fa447f59c 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/lock_named.xml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/xml/lock_named.xml
@@ -18,6 +18,8 @@
semaphore
flock
%env(REDIS_DSN)%
+ in-memory
+ mysql:host=localhost;dbname=test
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/lock_named.yml b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/lock_named.yml
index 01f3af47a9ed5..04ec9fc07f740 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/lock_named.yml
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/Fixtures/yml/lock_named.yml
@@ -12,3 +12,5 @@ framework:
bar: flock
baz: [semaphore, flock]
qux: "%env(REDIS_DSN)%"
+ corge: in-memory
+ grault: mysql:host=localhost;dbname=test
diff --git a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
index fc66c889f1aec..42017e29a7799 100644
--- a/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
+++ b/src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTestCase.php
@@ -2423,9 +2423,9 @@ public function testDefaultLock()
$storeDef = $container->getDefinition($container->getDefinition('lock.default.factory')->getArgument(0));
if (class_exists(SemaphoreStore::class) && SemaphoreStore::isSupported()) {
- self::assertEquals(new Reference('semaphore'), $storeDef->getArgument(0));
+ self::assertSame('semaphore', $storeDef->getArgument(0));
} else {
- self::assertEquals(new Reference('flock'), $storeDef->getArgument(0));
+ self::assertSame('flock', $storeDef->getArgument(0));
}
}
@@ -2435,23 +2435,31 @@ public function testNamedLocks()
self::assertTrue($container->hasDefinition('lock.foo.factory'));
$storeDef = $container->getDefinition($container->getDefinition('lock.foo.factory')->getArgument(0));
- self::assertEquals(new Reference('semaphore'), $storeDef->getArgument(0));
+ self::assertSame('semaphore', $storeDef->getArgument(0));
self::assertTrue($container->hasDefinition('lock.bar.factory'));
$storeDef = $container->getDefinition($container->getDefinition('lock.bar.factory')->getArgument(0));
- self::assertEquals(new Reference('flock'), $storeDef->getArgument(0));
+ self::assertSame('flock', $storeDef->getArgument(0));
self::assertTrue($container->hasDefinition('lock.baz.factory'));
$storeDef = $container->getDefinition($container->getDefinition('lock.baz.factory')->getArgument(0));
self::assertIsArray($storeDefArg = $storeDef->getArgument(0));
$storeDef1 = $container->getDefinition($storeDefArg[0]);
$storeDef2 = $container->getDefinition($storeDefArg[1]);
- self::assertEquals(new Reference('semaphore'), $storeDef1->getArgument(0));
- self::assertEquals(new Reference('flock'), $storeDef2->getArgument(0));
+ self::assertSame('semaphore', $storeDef1->getArgument(0));
+ self::assertSame('flock', $storeDef2->getArgument(0));
self::assertTrue($container->hasDefinition('lock.qux.factory'));
$storeDef = $container->getDefinition($container->getDefinition('lock.qux.factory')->getArgument(0));
self::assertStringContainsString('REDIS_DSN', $storeDef->getArgument(0));
+
+ self::assertTrue($container->hasDefinition('lock.corge.factory'));
+ $storeDef = $container->getDefinition($container->getDefinition('lock.corge.factory')->getArgument(0));
+ self::assertSame('in-memory', $storeDef->getArgument(0));
+
+ self::assertTrue($container->hasDefinition('lock.grault.factory'));
+ $storeDef = $container->getDefinition($container->getDefinition('lock.grault.factory')->getArgument(0));
+ self::assertSame('mysql:host=localhost;dbname=test', $storeDef->getArgument(0));
}
public function testLockWithService()