Skip to content

Commit

Permalink
Add use_lazy_ghost_object configuration
Browse files Browse the repository at this point in the history
  • Loading branch information
GromNaN committed Jan 23, 2025
1 parent cd20e33 commit adba204
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 3 deletions.
8 changes: 8 additions & 0 deletions src/DependencyInjection/Configuration.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
use function is_array;
use function is_string;
use function json_decode;
use function method_exists;
use function preg_match;

/**
Expand All @@ -39,6 +40,13 @@ public function getConfigTreeBuilder(): TreeBuilder
->children()
->scalarNode('proxy_namespace')->defaultValue('MongoDBODMProxies')->end()
->scalarNode('proxy_dir')->defaultValue('%kernel.cache_dir%/doctrine/odm/mongodb/Proxies')->end()
->booleanNode('enable_lazy_ghost_objects')
->defaultValue(method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'))
->validate()
->ifTrue(static fn ($v) => $v === true && ! method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'))
->thenInvalid('Lazy ghost objects require doctrine/mongodb-odm 2.10 or higher.')
->end()
->end()
->scalarNode('auto_generate_proxy_classes')
->defaultValue(ODMConfiguration::AUTOGENERATE_EVAL)
->beforeNormalization()
Expand Down
5 changes: 2 additions & 3 deletions src/DependencyInjection/DoctrineMongoDBExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -109,9 +109,8 @@ public function load(array $configs, ContainerBuilder $container): void
}

// Requires doctrine/mongodb-odm 2.10
$useLazyGhostObject = method_exists(ODMConfiguration::class, 'setUseLazyGhostObject');
$container->getDefinition('doctrine_mongodb')
->setArgument(5, $useLazyGhostObject ? Proxy::class : LazyLoadingInterface::class);
->setArgument(5, $config['enable_lazy_ghost_objects'] ? Proxy::class : LazyLoadingInterface::class);

// load the connections
$this->loadConnections($config['connections'], $container);
Expand All @@ -124,7 +123,7 @@ public function load(array $configs, ContainerBuilder $container): void
$config['default_document_manager'],
$config['default_database'],
$container,
$useLazyGhostObject,
$config['enable_lazy_ghost_objects'],
);

if ($config['resolve_target_documents']) {
Expand Down
3 changes: 3 additions & 0 deletions tests/DependencyInjection/ConfigurationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@

use function array_key_exists;
use function file_get_contents;
use function method_exists;

class ConfigurationTest extends TestCase
{
Expand All @@ -37,6 +38,7 @@ public function testDefaults(): void
'auto_generate_hydrator_classes' => false,
'auto_generate_proxy_classes' => ODMConfiguration::AUTOGENERATE_EVAL,
'auto_generate_persistent_collection_classes' => ODMConfiguration::AUTOGENERATE_NEVER,
'enable_lazy_ghost_objects' => method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'),
'default_database' => 'default',
'document_managers' => [],
'connections' => [],
Expand Down Expand Up @@ -69,6 +71,7 @@ public function testFullConfiguration(array $config): void
'auto_generate_hydrator_classes' => 1,
'auto_generate_proxy_classes' => ODMConfiguration::AUTOGENERATE_FILE_NOT_EXISTS,
'auto_generate_persistent_collection_classes' => ODMConfiguration::AUTOGENERATE_EVAL,
'enable_lazy_ghost_objects' => method_exists(ODMConfiguration::class, 'setUseLazyGhostObject'),
'default_connection' => 'conn1',
'default_database' => 'default_db_name',
'default_document_manager' => 'default_dm_name',
Expand Down

0 comments on commit adba204

Please sign in to comment.