Skip to content

Commit e87516b

Browse files
xificurkclaude
andauthored
Remove Reflector from StubFilesExtensionLoader (#747)
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 414ca85 commit e87516b

1 file changed

Lines changed: 21 additions & 25 deletions

File tree

src/Stubs/Doctrine/StubFilesExtensionLoader.php

Lines changed: 21 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -4,25 +4,15 @@
44

55
use Composer\InstalledVersions;
66
use OutOfBoundsException;
7-
use PHPStan\BetterReflection\Reflector\Exception\IdentifierNotFound;
8-
use PHPStan\BetterReflection\Reflector\Reflector;
97
use PHPStan\PhpDoc\StubFilesExtension;
108
use function class_exists;
119
use function dirname;
1210
use function strpos;
11+
use function version_compare;
1312

1413
class StubFilesExtensionLoader implements StubFilesExtension
1514
{
1615

17-
private Reflector $reflector;
18-
19-
public function __construct(
20-
Reflector $reflector
21-
)
22-
{
23-
$this->reflector = $reflector;
24-
}
25-
2616
public function getFiles(): array
2717
{
2818
$stubsDir = dirname(dirname(dirname(__DIR__))) . '/stubs';
@@ -36,20 +26,7 @@ public function getFiles(): array
3626
$files[] = $stubsDir . '/DBAL/Connection.stub';
3727
}
3828

39-
$hasLazyServiceEntityRepositoryAsParent = false;
40-
41-
try {
42-
$serviceEntityRepository = $this->reflector->reflectClass('Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository');
43-
if ($serviceEntityRepository->getParentClass() !== null) {
44-
/** @var class-string $lazyServiceEntityRepositoryName */
45-
$lazyServiceEntityRepositoryName = 'Doctrine\Bundle\DoctrineBundle\Repository\LazyServiceEntityRepository';
46-
$hasLazyServiceEntityRepositoryAsParent = $serviceEntityRepository->getParentClass()->getName() === $lazyServiceEntityRepositoryName;
47-
}
48-
} catch (IdentifierNotFound $e) {
49-
// pass
50-
}
51-
52-
if ($hasLazyServiceEntityRepositoryAsParent) {
29+
if ($this->hasLazyServiceEntityRepository()) {
5330
$files[] = $stubsDir . '/LazyServiceEntityRepository.stub';
5431
} else {
5532
$files[] = $stubsDir . '/ServiceEntityRepository.stub';
@@ -73,6 +50,25 @@ public function getFiles(): array
7350
return $files;
7451
}
7552

53+
private function hasLazyServiceEntityRepository(): bool
54+
{
55+
if (!class_exists(InstalledVersions::class)) {
56+
return false;
57+
}
58+
59+
try {
60+
$bundleVersion = InstalledVersions::getVersion('doctrine/doctrine-bundle');
61+
} catch (OutOfBoundsException $e) {
62+
return false;
63+
}
64+
65+
if ($bundleVersion === null) {
66+
return false;
67+
}
68+
69+
return version_compare($bundleVersion, '2.8.1', '>=') && version_compare($bundleVersion, '3.0.0', '<');
70+
}
71+
7672
private function isInstalledVersion(string $package, int $majorVersion): bool
7773
{
7874
if (!class_exists(InstalledVersions::class)) {

0 commit comments

Comments
 (0)