8000 [DoctrineBridge] Fix support for entities that leverage native lazy o… · symfony/symfony@382b3dd · GitHub
[go: up one dir, main page]

Skip to content

Commit 382b3dd

Browse files
[DoctrineBridge] Fix support for entities that leverage native lazy objects
1 parent 9645b9e commit 382b3dd

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

src/Symfony/Bridge/Doctrine/Security/User/EntityUserProvider.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ public function refreshUser(UserInterface $user): UserInterface
100100

101101
if ($refreshedUser instanceof Proxy && !$refreshedUser->__isInitialized()) {
102102
$refreshedUser->__load();
103+
} elseif (\PHP_VERSION_ID >= 80400 && ($r = new \ReflectionClass($refreshedUser))->isUninitializedLazyObject($refreshedUser)) {
104+
$r->initializeLazyObject($refreshedUser);
103105
}
104106

105107
return $refreshedUser;

src/Symfony/Bridge/Doctrine/Tests/DoctrineTestHelper.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ public static function createTestEntityManager(?Configuration $config = null): E
4747
$config ??= self::createTestConfiguration();
4848
$eventManager = new EventManager();
4949

50+
if (\PHP_VERSION_ID >= 80400 && method_exists($config, 'enableNativeLazyObjects')) {
51+
$config->enableNativeLazyObjects(true);
52+
}
53+
5054
return new EntityManager(DriverManager::getConnection($params, $config, $eventManager), $config, $eventManager);
5155
}
5256

src/Symfony/Bridge/Doctrine/Tests/Security/User/EntityUserProviderTest.php

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Symfony\Bridge\Doctrine\Tests\Security\User;
1313

14+
use Doctrine\ORM\Configuration;
1415
use Doctrine\ORM\EntityManager;
1516
use Doctrine\ORM\EntityRepository;
1617
use Doctrine\ORM\Tools\SchemaTool;
@@ -219,8 +220,13 @@ public function testRefreshedUserProxyIsLoaded()
219220
$provider = new EntityUserProvider($this->getManager($em), User::class);
220221
$refreshedUser = $provider->refreshUser($user);
221222

222-
$this->assertInstanceOf(Proxy::class, $refreshedUser);
223-
$this->assertTrue($refreshedUser->__isInitialized());
223+
if (\PHP_VERSION_ID >= 80400 && method_exists(Configuration::class, 'enableNativeLazyObjects')) {
224+
$this->assertFalse((new \ReflectionClass(User::class))->isUninitializedLazyObject($refreshedUser));
225+
$this->assertSame('user1', $refreshedUser->name);
226+
} else {
227+
$this->assertInstanceOf(Proxy::class, $refreshedUser);
228+
$this->assertTrue($refreshedUser->__isInitialized());
229+
}
224230
}
225231

226232
private function getManager($em, $name = null)

0 commit comments

Comments
 (0)
0