Skip to content

Commit fb1b8f3

Browse files
committed
Another attempt at fixing anonymous class names
1 parent dca3cab commit fb1b8f3

File tree

4 files changed

+31
-7
lines changed

4 files changed

+31
-7
lines changed

src/Reflection/BetterReflection/BetterReflectionProvider.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use PHPStan\Analyser\Scope;
77
use PHPStan\Broker\AnonymousClassNameHelper;
88
use PHPStan\DependencyInjection\Reflection\ClassReflectionExtensionRegistryProvider;
9+
use PHPStan\File\FileHelper;
910
use PHPStan\File\RelativePathHelper;
1011
use PHPStan\Parser\Parser;
1112
use PHPStan\PhpDoc\StubPhpDocProvider;
@@ -71,6 +72,9 @@ class BetterReflectionProvider implements ReflectionProvider
7172
/** @var Parser */
7273
private $parser;
7374

75+
/** @var \PHPStan\File\FileHelper */
76+
private $fileHelper;
77+
7478
/** @var \PHPStan\Reflection\FunctionReflection[] */
7579
private $functionReflections = [];
7680

@@ -91,6 +95,7 @@ public function __construct(
9195
AnonymousClassNameHelper $anonymousClassNameHelper,
9296
Standard $printer,
9397
Parser $parser,
98+
FileHelper $fileHelper,
9499
FunctionReflector $functionReflector,
95100
ConstantReflector $constantReflector
96101
)
@@ -105,6 +110,7 @@ public function __construct(
105110
$this->anonymousClassNameHelper = $anonymousClassNameHelper;
106111
$this->printer = $printer;
107112
$this->parser = $parser;
113+
$this->fileHelper = $fileHelper;
108114
$this->functionReflector = $functionReflector;
109115
$this->constantReflector = $constantReflector;
110116
}
@@ -185,7 +191,7 @@ public function getAnonymousClassReflection(\PhpParser\Node\Stmt\Class_ $classNo
185191
}
186192
}
187193

188-
$filename = $this->relativePathHelper->getRelativePath($scopeFile);
194+
$filename = $this->fileHelper->normalizePath($this->relativePathHelper->getRelativePath($scopeFile));
189195
$className = $this->anonymousClassNameHelper->getAnonymousClassName(
190196
$classNode,
191197
$scopeFile

src/Reflection/Runtime/RuntimeReflectionProvider.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use PHPStan\Analyser\Scope;
77
use PHPStan\Broker\AnonymousClassNameHelper;
88
use PHPStan\DependencyInjection\Reflection\ClassReflectionExtensionRegistryProvider;
9+
use PHPStan\File\FileHelper;
910
use PHPStan\File\RelativePathHelper;
1011
use PHPStan\Parser\Parser;
1112
use PHPStan\PhpDoc\StubPhpDocProvider;
@@ -49,6 +50,9 @@ class RuntimeReflectionProvider implements ReflectionProvider
4950
/** @var Parser */
5051
private $parser;
5152

53+
/** @var \PHPStan\File\FileHelper */
54+
private $fileHelper;
55+
5256
/** @var RelativePathHelper */
5357
private $relativePathHelper;
5458

@@ -75,6 +79,7 @@ public function __construct(
7579
\PhpParser\PrettyPrinter\Standard $printer,
7680
AnonymousClassNameHelper $anonymousClassNameHelper,
7781
Parser $parser,
82+
FileHelper $fileHelper,
7883
RelativePathHelper $relativePathHelper,
7984
StubPhpDocProvider $stubPhpDocProvider
8085
)
@@ -86,6 +91,7 @@ public function __construct(
8691
$this->printer = $printer;
8792
$this->anonymousClassNameHelper = $anonymousClassNameHelper;
8893
$this->parser = $parser;
94+
$this->fileHelper = $fileHelper;
8995
$this->relativePathHelper = $relativePathHelper;
9096
$this->stubPhpDocProvider = $stubPhpDocProvider;
9197
}
@@ -165,7 +171,7 @@ public function getAnonymousClassReflection(
165171
}
166172
}
167173

168-
$filename = $this->relativePathHelper->getRelativePath($scopeFile);
174+
$filename = $this->fileHelper->normalizePath($this->relativePathHelper->getRelativePath($scopeFile), '/');
169175

170176
$className = $this->anonymousClassNameHelper->getAnonymousClassName(
171177
$classNode,

src/Testing/TestCase.php

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,8 @@ public function createReflectionProvider(): ReflectionProvider
143143
$cache = new Cache(new MemoryCacheStorage());
144144
$currentWorkingDirectory = $this->getCurrentWorkingDirectory();
145145
$relativePathHelper = new FuzzyRelativePathHelper($currentWorkingDirectory, DIRECTORY_SEPARATOR, []);
146-
$fileTypeMapper = new FileTypeMapper($parser, $phpDocStringResolver, $phpDocNodeResolver, $cache, new AnonymousClassNameHelper(new FileHelper($currentWorkingDirectory), $relativePathHelper));
146+
$fileHelper = new FileHelper($currentWorkingDirectory);
147+
$fileTypeMapper = new FileTypeMapper($parser, $phpDocStringResolver, $phpDocNodeResolver, $cache, new AnonymousClassNameHelper($fileHelper, $relativePathHelper));
147148
$functionCallStatementFinder = new FunctionCallStatementFinder();
148149
$functionReflectionFactory = $this->getFunctionReflectionFactory(
149150
$functionCallStatementFinder,
@@ -161,7 +162,8 @@ public function createReflectionProvider(): ReflectionProvider
161162
$functionReflectionFactory,
162163
$relativePathHelper,
163164
$anonymousClassNameHelper,
164-
$parser
165+
$parser,
166+
$fileHelper
165167
) implements BetterReflectionProviderFactory {
166168

167169
/** @var \PHPStan\DependencyInjection\Reflection\ClassReflectionExtensionRegistryProvider */
@@ -185,14 +187,18 @@ public function createReflectionProvider(): ReflectionProvider
185187
/** @var Parser */
186188
private $parser;
187189

190+
/** @var \PHPStan\File\FileHelper */
191+
private $fileHelper;
192+
188193
public function __construct(
189194
ClassReflectionExtensionRegistryProvider $classReflectionExtensionRegistryProvider,
190195
Container $container,
191196
FileTypeMapper $fileTypeMapper,
192197
FunctionReflectionFactory $functionReflectionFactory,
193198
RelativePathHelper $relativePathHelper,
194199
AnonymousClassNameHelper $anonymousClassNameHelper,
195-
Parser $parser
200+
Parser $parser,
201+
FileHelper $fileHelper
196202
)
197203
{
198204
$this->classReflectionExtensionRegistryProvider = $classReflectionExtensionRegistryProvider;
@@ -202,6 +208,7 @@ public function __construct(
202208
$this->relativePathHelper = $relativePathHelper;
203209
$this->anonymousClassNameHelper = $anonymousClassNameHelper;
204210
$this->parser = $parser;
211+
$this->fileHelper = $fileHelper;
205212
}
206213

207214
public function create(
@@ -221,6 +228,7 @@ public function create(
221228
$this->anonymousClassNameHelper,
222229
$this->container->getByType(Standard::class),
223230
$this->parser,
231+
$this->fileHelper,
224232
$functionReflector,
225233
$constantReflector
226234
);
@@ -325,7 +333,8 @@ public function create(
325333
$annotationsPropertiesClassReflectionExtension = new AnnotationsPropertiesClassReflectionExtension($fileTypeMapper);
326334
$signatureMapProvider = self::getContainer()->getByType(SignatureMapProvider::class);
327335
$currentWorkingDirectory = $this->getCurrentWorkingDirectory();
328-
$anonymousClassNameHelper = new AnonymousClassNameHelper(new FileHelper($currentWorkingDirectory), $relativePathHelper);
336+
$fileHelper = new FileHelper($currentWorkingDirectory);
337+
$anonymousClassNameHelper = new AnonymousClassNameHelper($fileHelper, $relativePathHelper);
329338
$classReflectionExtensionRegistryProvider = $this->getClassReflectionExtensionRegistryProvider();
330339
$functionReflectionFactory = $this->getFunctionReflectionFactory(
331340
$functionCallStatementFinder,
@@ -339,6 +348,7 @@ public function create(
339348
self::getContainer()->getByType(Standard::class),
340349
$anonymousClassNameHelper,
341350
self::getContainer()->getByType(Parser::class),
351+
$fileHelper,
342352
$relativePathHelper,
343353
self::getContainer()->getByType(StubPhpDocProvider::class)
344354
);

tests/PHPStan/Broker/BrokerTest.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ protected function setUp(): void
3232

3333
$workingDirectory = __DIR__;
3434
$relativePathHelper = new FuzzyRelativePathHelper($workingDirectory, DIRECTORY_SEPARATOR, []);
35-
$anonymousClassNameHelper = new AnonymousClassNameHelper(new FileHelper($workingDirectory), $relativePathHelper);
35+
$fileHelper = new FileHelper($workingDirectory);
36+
$anonymousClassNameHelper = new AnonymousClassNameHelper($fileHelper, $relativePathHelper);
3637

3738
$classReflectionExtensionRegistryProvider = new DirectClassReflectionExtensionRegistryProvider([], []);
3839
$dynamicReturnTypeExtensionRegistryProvider = new DirectDynamicReturnTypeExtensionRegistryProvider([], [], []);
@@ -46,6 +47,7 @@ protected function setUp(): void
4647
self::getContainer()->getByType(\PhpParser\PrettyPrinter\Standard::class),
4748
$anonymousClassNameHelper,
4849
self::getContainer()->getByType(Parser::class),
50+
$fileHelper,
4951
$relativePathHelper,
5052
self::getContainer()->getByType(StubPhpDocProvider::class)
5153
);

0 commit comments

Comments
 (0)