File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 }
Original file line number Diff line number Diff line change 1212use Ock \ClassDiscovery \Tests \Fixtures \Acme \Plant \MusaAcuminata ;
1313use Ock \ClassDiscovery \Tests \Fixtures \NonLoadingInterface ;
1414use Ock \ClassFilesIterator \ClassFilesIA \ClassFilesIAInterface ;
15- use Ock \ClassFilesIterator \ClassFilesIA \RealpathRootThisTrait ;
1615use Ock \ClassFilesIterator \ClassNamesIA \ClassNamesIAInterface ;
1716use 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 }
You can’t perform that action at this time.
0 commit comments