Skip to content

Commit bc1d04b

Browse files
authored
Merge pull request #1414 from staabm/parent
More efficient `ReflectionClass->getParentClass()`
2 parents d63ad67 + f757f21 commit bc1d04b

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

psalm-baseline.xml

+1
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@
100100
<code><![CDATA[reflectClass]]></code>
101101
<code><![CDATA[reflectClass]]></code>
102102
<code><![CDATA[reflectClass]]></code>
103+
<code><![CDATA[reflectClass]]></code>
103104
<code><![CDATA[toLowerString]]></code>
104105
</ImpureMethodCall>
105106
</file>

src/Reflection/ReflectionClass.php

+7-3
Original file line numberDiff line numberDiff line change
@@ -1086,12 +1086,16 @@ public function getEndColumn(): int
10861086
*/
10871087
public function getParentClass(): ReflectionClass|null
10881088
{
1089-
$parentClass = $this->getParentClasses()[0] ?? null;
1090-
1091-
if ($parentClass === null) {
1089+
$parentClassName = $this->getParentClassName();
1090+
if ($parentClassName === null) {
10921091
return null;
10931092
}
10941093

1094+
if ($this->name === $parentClassName) {
1095+
throw CircularReference::fromClassName($parentClassName);
1096+
}
1097+
1098+
$parentClass = $this->reflector->reflectClass($parentClassName);
10951099
if ($parentClass->isInterface() || $parentClass->isTrait()) {
10961100
throw NotAClassReflection::fromReflectionClass($parentClass);
10971101
}

0 commit comments

Comments
 (0)