8000 Merge branch '7.2' into 7.3 · symfony/symfony@fe4a9ea · GitHub
[go: up one dir, main page]

Skip to content

Commit fe4a9ea

Browse files
Merge branch '7.2' into 7.3
* 7.2: [DoctrineBridge] Fix support for entities that leverage native lazy objects
2 parents 561d4a0 + 790a0c8 commit fe4a9ea

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;
@@ -225,8 +226,13 @@ public function testRefreshedUserProxyIsLoaded()
225226
$provider = new EntityUserProvider($this->getManager($em), User::class);
226227
$refreshedUser = $provider->refreshUser($user);
227228

228-
$this->assertInstanceOf(Proxy::class, $refreshedUser);
229-
$this->assertTrue($refreshedUser->__isInitialized());
229+
if (\PHP_VERSION_ID >= 80400 && method_exists(Configuration::class, 'enableNativeLazyObjects')) {
230+
$this->assertFalse((new \ReflectionClass(User::class))->isUninitializedLazyObject($refreshedUser));
231+
$this->assertSame('user1', $refreshedUser->name);
232+
} else {
233+
$this->assertInstanceOf(Proxy::class, $refreshedUser);
234+
$this->assertTrue($refreshedUser->__isInitialized());
235+
}
230236
}
231237

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

0 commit comments

Comments
 (0)
0