From 469c4caa237901513f352c18f27f3fb7479da6ca Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 4 Sep 2025 21:45:39 +0200 Subject: [PATCH] Faster getTraits() methods --- src/Reflection/Adapter/ReflectionClass.php | 14 +++++++------- src/Reflection/Adapter/ReflectionEnum.php | 14 +++++++------- src/Reflection/Adapter/ReflectionObject.php | 14 +++++++------- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/Reflection/Adapter/ReflectionClass.php b/src/Reflection/Adapter/ReflectionClass.php index e4b7b259f..28f4b7f38 100644 --- a/src/Reflection/Adapter/ReflectionClass.php +++ b/src/Reflection/Adapter/ReflectionClass.php @@ -384,14 +384,14 @@ public function getTraits(): array { $traits = $this->betterReflectionClass->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new self($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): self => new self($trait), $traits), - ); + return $traitsByName; } /** diff --git a/src/Reflection/Adapter/ReflectionEnum.php b/src/Reflection/Adapter/ReflectionEnum.php index 796dfaec5..4de8f7f2e 100644 --- a/src/Reflection/Adapter/ReflectionEnum.php +++ b/src/Reflection/Adapter/ReflectionEnum.php @@ -312,14 +312,14 @@ public function getTraits(): array { $traits = $this->betterReflectionEnum->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new ReflectionClass($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): ReflectionClass => new ReflectionClass($trait), $traits), - ); + return $traitsByName; } /** @return list */ diff --git a/src/Reflection/Adapter/ReflectionObject.php b/src/Reflection/Adapter/ReflectionObject.php index 327f99133..5ddf9137a 100644 --- a/src/Reflection/Adapter/ReflectionObject.php +++ b/src/Reflection/Adapter/ReflectionObject.php @@ -316,14 +316,14 @@ public function getTraits(): array { $traits = $this->betterReflectionObject->getTraits(); - /** @var list $traitNames */ - $traitNames = array_map(static fn (BetterReflectionClass $trait): string => $trait->getName(), $traits); + $traitsByName = []; + foreach ($traits as $trait) { + /** @var trait-string $traitName */ + $traitName = $trait->getName(); + $traitsByName[$traitName] = new ReflectionClass($trait); + } - /** @psalm-suppress ImpureFunctionCall */ - return array_combine( - $traitNames, - array_map(static fn (BetterReflectionClass $trait): ReflectionClass => new ReflectionClass($trait), $traits), - ); + return $traitsByName; } /**