From 36f3291bd53f057a50613a99cbd805464723a94b Mon Sep 17 00:00:00 2001 From: Ondrej Mirtes Date: Fri, 7 Feb 2025 14:56:52 +0100 Subject: [PATCH] Get rid of array_combine for traits list --- src/Reflection/ReflectionClass.php | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/src/Reflection/ReflectionClass.php b/src/Reflection/ReflectionClass.php index 6ab9bcf4e..ab6555e20 100644 --- a/src/Reflection/ReflectionClass.php +++ b/src/Reflection/ReflectionClass.php @@ -41,6 +41,7 @@ use Traversable; use UnitEnum; +use function array_combine; use function array_filter; use function array_key_exists; use function array_keys; @@ -419,7 +420,10 @@ private function createMethodsFromTrait(ReflectionMethod $method): array } if ($this->traitsData['aliases'] !== []) { - $traits = array_combine($this->traitClassNames, $this->getTraits()); + $traits = []; + foreach ($this->getTraits() as $trait) { + $traits[$trait->getName()] = $trait; + } foreach ($this->traitsData['aliases'] as $traitClassName => $traitAliasDefinitions) { foreach ($traitAliasDefinitions as $traitAliasDefinition) { @@ -427,6 +431,10 @@ private function createMethodsFromTrait(ReflectionMethod $method): array continue; } + if (!array_key_exists($traitClassName, $traits)) { + continue; + } + if (! $traits[$traitClassName]->hasMethod($traitAliasDefinition['method'])) { continue; } @@ -1433,11 +1441,17 @@ public function getTraitAliases(): array return []; } - $traits = array_combine($this->traitClassNames, $this->getTraits()); + $traits = []; + foreach ($this->getTraits() as $trait) { + $traits[$trait->getName()] = $trait; + } $traitAliases = []; foreach ($this->traitsData['aliases'] as $traitClassName => $traitAliasDefinitions) { foreach ($traitAliasDefinitions as $traitAliasDefinition) { + if (!array_key_exists($traitClassName, $traits)) { + continue; + } if (! $traits[$traitClassName]->hasMethod($traitAliasDefinition['method'])) { continue; }