Skip to content

Commit 2b8e580

Browse files
committed
Enable native lazy objects in doctrine/orm if available
Fixes deprecation warnings in PHP 8.4 or higher and an error in symfony 8 and higher since the LazyGhostTrait is no longer available but doctrine/orm relies on it when not using native lazy objects.
1 parent 86b4ab2 commit 2b8e580

3 files changed

Lines changed: 20 additions & 8 deletions

File tree

tests/Metadata/Driver/DoctrineDriverTest.php

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -137,8 +137,12 @@ public function testGuidPropertyIsGivenStringType()
137137
protected function getEntityManager(): EntityManager
138138
{
139139
$config = new Configuration();
140-
$config->setProxyDir(sys_get_temp_dir() . '/JMSDoctrineTestProxies');
141-
$config->setProxyNamespace('JMS\Tests\Proxies');
140+
if (PHP_VERSION_ID >= 80400 && method_exists($config, 'enableNativeLazyObjects')) {
141+
$config->enableNativeLazyObjects(true);
142+
} else {
143+
$config->setProxyDir(sys_get_temp_dir() . '/JMSDoctrineTestProxies');
144+
$config->setProxyNamespace('JMS\Tests\Proxies');
145+
}
142146

143147
if (PHP_VERSION_ID >= 80000 && class_exists(DoctrineAttributeDriver::class)) {
144148
$config->setMetadataDriverImpl(

tests/Serializer/Doctrine/IntegrationTest.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,13 @@ private function createEntityManager(Connection $con)
148148
]));
149149
}
150150

151-
$cfg->setAutoGenerateProxyClasses(true);
152-
$cfg->setProxyNamespace('JMS\Serializer\DoctrineProxy');
153-
$cfg->setProxyDir(sys_get_temp_dir() . '/serializer-test-proxies');
151+
if (PHP_VERSION_ID >= 80400 && method_exists($cfg, 'enableNativeLazyObjects')) {
152+
$cfg->enableNativeLazyObjects(true);
153+
} else {
154+
$cfg->setAutoGenerateProxyClasses(true);
155+
$cfg->setProxyNamespace('JMS\Serializer\DoctrineProxy');
156+
$cfg->setProxyDir(sys_get_temp_dir() . '/serializer-test-proxies');
157+
}
154158

155159
return new EntityManager($con, $cfg);
156160
}

tests/Serializer/Doctrine/ObjectConstructorTest.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -543,9 +543,13 @@ private function createEntityManager(Connection $con, ?Configuration $cfg = null
543543
}
544544
}
545545

546-
$cfg->setAutoGenerateProxyClasses(true);
547-
$cfg->setProxyNamespace('JMS\Serializer\DoctrineProxy');
548-
$cfg->setProxyDir(sys_get_temp_dir() . '/serializer-test-proxies');
546+
if (PHP_VERSION_ID >= 80400 && method_exists($cfg, 'enableNativeLazyObjects')) {
547+
$cfg->enableNativeLazyObjects(true);
548+
} else {
549+
$cfg->setAutoGenerateProxyClasses(true);
550+
$cfg->setProxyNamespace('JMS\Serializer\DoctrineProxy');
551+
$cfg->setProxyDir(sys_get_temp_dir() . '/serializer-test-proxies');
552+
}
549553

550554
return new EntityManager($con, $cfg);
551555
}

0 commit comments

Comments
 (0)