Skip to content

Commit af0fe77

Browse files
authored
Test with Symfony 7.3 (#894)
* Test with Symfony 7.3 * Fix use statement ordering in config docs
1 parent ae53b95 commit af0fe77

File tree

4 files changed

+25
-14
lines changed

4 files changed

+25
-14
lines changed

.github/workflows/continuous-integration.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ jobs:
3232
symfony-version:
3333
- "6.4.*"
3434
- "7.2.*"
35+
- "7.3.*"
3536
driver-version:
3637
- "stable"
3738
dependencies:
@@ -52,6 +53,8 @@ jobs:
5253
exclude:
5354
- php-version: "8.1"
5455
symfony-version: "7.2.*"
56+
- php-version: "8.1"
57+
symfony-version: "7.3.*"
5558

5659
services:
5760
mongodb:

docs/config.rst

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ Sample Configuration
4949
5050
.. code-block:: php
5151
52+
use Symfony\Config\DoctrineMongodbConfig;
5253
use function Symfony\Component\DependencyInjection\Loader\Configurator\env;
5354
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
54-
use Symfony\Config\DoctrineMongodbConfig;
5555
5656
return static function (DoctrineMongodbConfig $config): void {
5757
$config->connection('default')
@@ -142,9 +142,9 @@ If you wish to use memcached to cache your metadata, you need to configure the
142142
143143
.. code-block:: php
144144
145-
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
146145
use Symfony\Component\Cache\Adapter\MemcachedAdapter;
147146
use Symfony\Config\DoctrineMongodbConfig;
147+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
148148
149149
return static function (DoctrineMongodbConfig $config): void {
150150
$config->defaultDatabase('hello_' . param('kernel.environment'));
@@ -260,8 +260,8 @@ The following configuration shows a bunch of mapping examples:
260260
261261
.. code-block:: php
262262
263-
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
264263
use Symfony\Config\DoctrineMongodbConfig;
264+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
265265
266266
return static function (DoctrineMongodbConfig $config): void {
267267
$config->documentManager('default')
@@ -475,8 +475,8 @@ following syntax:
475475
476476
.. code-block:: php
477477
478-
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
479478
use Symfony\Config\DoctrineMongodbConfig;
479+
use function Symfony\Component\DependencyInjection\Loader\Configurator\param;
480480
481481
return static function (DoctrineMongodbConfig $config): void {
482482
$config->defaultDatabase('hello_' . param('kernel.environment'));

src/DependencyInjection/DoctrineMongoDBExtension.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,22 +158,22 @@ public function load(array $configs, ContainerBuilder $container): void
158158

159159
// Document classes are excluded from the container by default
160160
$container->registerAttributeForAutoconfiguration(Document::class, static function (ChildDefinition $definition): void {
161-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', Document::class)])->setAbstract(true);
161+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', Document::class)]);
162162
});
163163
$container->registerAttributeForAutoconfiguration(EmbeddedDocument::class, static function (ChildDefinition $definition): void {
164-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', EmbeddedDocument::class)])->setAbstract(true);
164+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', EmbeddedDocument::class)]);
165165
});
166166
$container->registerAttributeForAutoconfiguration(MappedSuperclass::class, static function (ChildDefinition $definition): void {
167-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', MappedSuperclass::class)])->setAbstract(true);
167+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', MappedSuperclass::class)]);
168168
});
169169
$container->registerAttributeForAutoconfiguration(View::class, static function (ChildDefinition $definition): void {
170-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', View::class)])->setAbstract(true);
170+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', View::class)]);
171171
});
172172
$container->registerAttributeForAutoconfiguration(QueryResultDocument::class, static function (ChildDefinition $definition): void {
173-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', QueryResultDocument::class)])->setAbstract(true);
173+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', QueryResultDocument::class)]);
174174
});
175175
$container->registerAttributeForAutoconfiguration(File::class, static function (ChildDefinition $definition): void {
176-
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', File::class)])->setAbstract(true);
176+
$definition->addTag('container.excluded', ['source' => sprintf('with #[%s] attribute', File::class)]);
177177
});
178178

179179
$this->loadMessengerServices($container, $loader);

tests/DependencyInjection/DoctrineMongoDBExtensionTest.php

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
use function class_exists;
2727
use function interface_exists;
2828
use function is_dir;
29+
use function method_exists;
2930
use function sprintf;
3031
use function sys_get_temp_dir;
3132

@@ -126,14 +127,21 @@ public function testDocumentAttributeExcludesFromContainer(string $class): void
126127
$extension = new DoctrineMongoDBExtension();
127128
$extension->load($this->buildConfiguration(), $container);
128129

129-
$attributes = $container->getAutoconfiguredAttributes();
130-
$this->assertInstanceOf(Closure::class, $attributes[$class]);
130+
// @phpstan-ignore function.alreadyNarrowedType
131+
if (method_exists($container, 'getAttributeAutoconfigurators')) {
132+
// Compatibility with Symfony 7.3 and later
133+
$autoconfigurator = $container->getAttributeAutoconfigurators()[$class][0];
134+
} else {
135+
// Compatibility with Symfony 7.2 and earlier
136+
$autoconfigurator = $container->getAutoconfiguredAttributes()[$class];
137+
}
138+
139+
$this->assertInstanceOf(Closure::class, $autoconfigurator);
131140

132141
$definition = new ChildDefinition('');
133-
$attributes[$class]($definition);
142+
$autoconfigurator($definition);
134143

135144
$this->assertSame([['source' => sprintf('with #[%s] attribute', $class)]], $definition->getTag('container.excluded'));
136-
$this->assertTrue($definition->isAbstract());
137145
}
138146

139147
/** @param string|string[] $bundles */

0 commit comments

Comments
 (0)