Skip to content

Commit 6ade0ee

Browse files
committed
Add use_lazy_ghost_object configuration
1 parent cd20e33 commit 6ade0ee

File tree

3 files changed

+13
-3
lines changed

3 files changed

+13
-3
lines changed

src/DependencyInjection/Configuration.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use function is_array;
1616
use function is_string;
1717
use function json_decode;
18+
use function method_exists;
1819
use function preg_match;
1920

2021
/**
@@ -39,6 +40,13 @@ public function getConfigTreeBuilder(): TreeBuilder
3940
->children()
4041
->scalarNode('proxy_namespace')->defaultValue('MongoDBODMProxies')->end()
4142
->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/odm/mongodb/Proxies')->end()
43+
->booleanNode('use_lazy_ghost_object')
44+
->defaultValue(method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'))
45+
->validate()
46+
->ifTrue(static fn ($v) => $v === true && ! method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'))
47+
->thenInvalid('Lazy ghost objects require doctrine/mongodb-odm 2.10 or higher.')
48+
->end()
49+
->end()
4250
->scalarNode('auto_generate_proxy_classes')
4351
->defaultValue(ODMConfiguration::AUTOGENERATE_EVAL)
4452
->beforeNormalization()

src/DependencyInjection/DoctrineMongoDBExtension.php

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,9 +109,8 @@ public function load(array $configs, ContainerBuilder $container): void
109109
}
110110

111111
// Requires doctrine/mongodb-odm 2.10
112-
$useLazyGhostObject = method_exists(ODMConfiguration::class, 'setUseLazyGhostObject');
113112
$container->getDefinition('doctrine_mongodb')
114-
->setArgument(5, $useLazyGhostObject ? Proxy::class : LazyLoadingInterface::class);
113+
->setArgument(5, $config['use_lazy_ghost_object'] ? Proxy::class : LazyLoadingInterface::class);
115114

116115
// load the connections
117116
$this->loadConnections($config['connections'], $container);
@@ -124,7 +123,7 @@ public function load(array $configs, ContainerBuilder $container): void
124123
$config['default_document_manager'],
125124
$config['default_database'],
126125
$container,
127-
$useLazyGhostObject,
126+
$config['use_lazy_ghost_object'],
128127
);
129128

130129
if ($config['resolve_target_documents']) {

tests/DependencyInjection/ConfigurationTest.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
use function array_key_exists;
2424
use function file_get_contents;
25+
use function method_exists;
2526

2627
class ConfigurationTest extends TestCase
2728
{
@@ -37,6 +38,7 @@ public function testDefaults(): void
3738
'auto_generate_hydrator_classes' => false,
3839
'auto_generate_proxy_classes' => ODMConfiguration::AUTOGENERATE_EVAL,
3940
'auto_generate_persistent_collection_classes' => ODMConfiguration::AUTOGENERATE_NEVER,
41+
'use_lazy_ghost_object' => method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'),
4042
'default_database' => 'default',
4143
'document_managers' => [],
4244
'connections' => [],
@@ -69,6 +71,7 @@ public function testFullConfiguration(array $config): void
6971
'auto_generate_hydrator_classes' => 1,
7072
'auto_generate_proxy_classes' => ODMConfiguration::AUTOGENERATE_FILE_NOT_EXISTS,
7173
'auto_generate_persistent_collection_classes' => ODMConfiguration::AUTOGENERATE_EVAL,
74+
'use_lazy_ghost_object' => method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'),
7275
'default_connection' => 'conn1',
7376
'default_database' => 'default_db_name',
7477
'default_document_manager' => 'default_dm_name',

0 commit comments

Comments
 (0)