Skip to content

Commit c671d47

Browse files
committed
Drop ->withRealpathRoot().
1 parent 51ea833 commit c671d47

2 files changed

Lines changed: 15 additions & 9 deletions

File tree

src/ReflectionClassesIA/ReflectionClassesIA_ClassFilesIA.php

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public function __construct(
2020
* {@inheritdoc}
2121
*/
2222
public function getIterator(): \Iterator {
23-
foreach ($this->classFilesIA->withRealpathRoot() as $file => $class) {
23+
foreach ($this->classFilesIA as $file => $class) {
2424
try {
2525
$reflectionClass = new ClassReflection($class);
2626
}
@@ -30,8 +30,19 @@ public function getIterator(): \Iterator {
3030
// Unfortunately, missing traits still cause fatal error.
3131
continue;
3232
}
33+
// Skip a class that is defined elsewhere.
34+
// Optimize for the case where both paths are already the same, without
35+
// calling realpath().
3336
if ($file !== $reflectionClass->getFileName()) {
34-
continue;
37+
if ($reflectionClass->getFileName() === false) {
38+
// This is a built-in class.
39+
continue;
40+
}
41+
if (realpath($file) !== $reflectionClass->getFileName()
42+
&& realpath($file) !== realpath($reflectionClass->getFileName())
43+
) {
44+
continue;
45+
}
3546
}
3647
yield $reflectionClass;
3748
}

tests/src/ReflectionClassesIATest.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
use Ock\ClassDiscovery\Tests\Fixtures\Acme\Plant\MusaAcuminata;
1313
use Ock\ClassDiscovery\Tests\Fixtures\NonLoadingInterface;
1414
use Ock\ClassFilesIterator\ClassFilesIA\ClassFilesIAInterface;
15-
use Ock\ClassFilesIterator\ClassFilesIA\RealpathRootThisTrait;
1615
use Ock\ClassFilesIterator\ClassNamesIA\ClassNamesIAInterface;
1716
use PHPUnit\Framework\TestCase;
1817

@@ -53,9 +52,7 @@ public function testFromClassFilesIA(): void {
5352
MusaAcuminata::class,
5453
WaterBear::class,
5554
];
56-
$classFilesIA = new class($classNames) extends \ArrayObject implements ClassFilesIAInterface {
57-
use RealpathRootThisTrait;
58-
};
55+
$classFilesIA = new class($classNames) extends \ArrayObject implements ClassFilesIAInterface {};
5956
$reflectionClassesIA = new ReflectionClassesIA_ClassFilesIA($classFilesIA);
6057
$this->assertReflectionClassNames($expectedRemainingClassNames, $reflectionClassesIA);
6158
}
@@ -69,9 +66,7 @@ public function testSkipWrongPath(): void {
6966
$expectedRemainingClassNames = [
7067
MusaAcuminata::class,
7168
];
72-
$classFilesIA = new class($classNames) extends \ArrayObject implements ClassFilesIAInterface {
73-
use RealpathRootThisTrait;
74-
};
69+
$classFilesIA = new class($classNames) extends \ArrayObject implements ClassFilesIAInterface {};
7570
$reflectionClassesIA = new ReflectionClassesIA_ClassFilesIA($classFilesIA);
7671
$this->assertReflectionClassNames($expectedRemainingClassNames, $reflectionClassesIA);
7772
}

0 commit comments

Comments
 (0)