Skip to content

Commit

Permalink
Improve ParentClassMethodTypeOverrideGuard performance (#3660)
Browse files Browse the repository at this point in the history
* Improve ParentClassMethodTypeOverrideGuard performance

* use instanceof
  • Loading branch information
staabm committed Apr 23, 2023
1 parent a729d72 commit c7379ec
Showing 1 changed file with 10 additions and 4 deletions.
14 changes: 10 additions & 4 deletions packages/VendorLocker/ParentClassMethodTypeOverrideGuard.php
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,20 @@ public function getParentClassMethod(ClassMethod $classMethod): ?MethodReflectio

/** @var string $methodName */
$methodName = $this->nodeNameResolver->getName($classMethod);
$parentClassReflections = array_merge($classReflection->getParents(), $classReflection->getInterfaces());
$parentClassReflection = $classReflection->getParentClass();
while ($parentClassReflection instanceof ClassReflection) {
if ($parentClassReflection->hasNativeMethod($methodName)) {
return $parentClassReflection->getNativeMethod($methodName);
}
$parentClassReflection = $parentClassReflection->getParentClass();
}

foreach ($parentClassReflections as $parentClassReflection) {
if (! $parentClassReflection->hasNativeMethod($methodName)) {
foreach ($classReflection->getInterfaces() as $interfaceReflection) {
if (! $interfaceReflection->hasNativeMethod($methodName)) {
continue;
}

return $parentClassReflection->getNativeMethod($methodName);
return $interfaceReflection->getNativeMethod($methodName);
}

return null;
Expand Down

0 comments on commit c7379ec

Please sign in to comment.