Skip to content

Commit 7834fe6

Browse files
committed
Remove parameter name usage for AutowireDatabase
1 parent 7e9d88c commit 7834fe6

File tree

3 files changed

+16
-10
lines changed

3 files changed

+16
-10
lines changed

src/Attribute/AutowireDatabase.php

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,28 @@
3030
use Symfony\Component\DependencyInjection\Reference;
3131

3232
use function is_string;
33+
use function sprintf;
3334

3435
/**
3536
* Autowires a MongoDB database.
3637
*/
3738
#[Attribute(Attribute::TARGET_PARAMETER)]
3839
final class AutowireDatabase extends AutowireCallable
3940
{
41+
private readonly string $serviceId;
42+
4043
public function __construct(
4144
private readonly ?string $database = null,
4245
?string $client = null,
4346
private readonly array $options = [],
4447
bool|string $lazy = false,
4548
) {
46-
$callable = $client === null
47-
? [new Reference(Client::class), 'selectDatabase']
48-
: [new Reference(MongoDBExtension::createClientServiceId($client)), 'selectDatabase'];
49+
$this->serviceId = $client === null
50+
? Client::class
51+
: MongoDBExtension::createClientServiceId($client);
4952

5053
parent::__construct(
51-
callable: $callable,
54+
callable: [new Reference($this->serviceId), 'selectDatabase'],
5255
lazy: $lazy,
5356
);
5457
}
@@ -57,7 +60,10 @@ public function buildDefinition(mixed $value, ?string $type, ReflectionParameter
5760
{
5861
return (new Definition(is_string($this->lazy) ? $this->lazy : ($type ?: Database::class)))
5962
->setFactory($value)
60-
->setArguments([$this->database ?? $parameter->getName(), $this->options])
63+
->setArguments([
64+
$this->database ?? sprintf('%%%s.default_database%%', $this->serviceId),
65+
$this->options,
66+
])
6167
->setLazy($this->lazy);
6268
}
6369
}

tests/TestApplication/src/Controller/AutowireDatabaseController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,10 @@ public function withoutArguments(
4646
/** @see AutowireClientTest::testWithCustomClientSetViaOptions() */
4747
#[Route('/with-custom-client')]
4848
public function withCustomClient(
49-
#[AutowireDatabase(client: FunctionalTestCase::CLIENT_ID_SECONDARY)]
50-
Database $google,
49+
#[AutowireDatabase(database: 'google', client: FunctionalTestCase::CLIENT_ID_SECONDARY)]
50+
Database $database,
5151
): JsonResponse {
52-
$this->insertDocumentForDatabase($google, FunctionalTestCase::COLLECTION_USERS);
52+
$this->insertDocumentForDatabase($database, FunctionalTestCase::COLLECTION_USERS);
5353

5454
return new JsonResponse();
5555
}

tests/Unit/Attribute/AutowireDatabaseTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ static function (Database $mydb): void {
4848

4949
$this->assertSame(Database::class, $definition->getClass());
5050
$this->assertEquals($autowire->value, $definition->getFactory());
51-
$this->assertSame('mydb', $definition->getArgument(0));
51+
$this->assertSame('%MongoDB\Client.default_database%', $definition->getArgument(0));
5252
}
5353

5454
public function testDatabase(): void
@@ -98,7 +98,7 @@ static function (Database $mydb): void {
9898

9999
$this->assertSame(Database::class, $definition->getClass());
100100
$this->assertEquals($autowire->value, $definition->getFactory());
101-
$this->assertSame('mydb', $definition->getArgument(0));
101+
$this->assertSame('%mongodb.client.default.default_database%', $definition->getArgument(0));
102102
$this->assertSame(['foo' => 'bar'], $definition->getArgument(1));
103103
}
104104
}

0 commit comments

Comments
 (0)