From 72f6a902c0923840e32fcbef8b743d4653836d79 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 25 Jun 2026 09:30:37 +0200 Subject: [PATCH 1/3] Reduce overhead of VerbosityLevel --- src/Type/VerbosityLevel.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/src/Type/VerbosityLevel.php b/src/Type/VerbosityLevel.php index 35a90e22ba3..a4066fca481 100644 --- a/src/Type/VerbosityLevel.php +++ b/src/Type/VerbosityLevel.php @@ -57,15 +57,6 @@ private function __construct(private int $value) { } - /** - * @param self::* $value - */ - private static function create(int $value): self - { - self::$registry[$value] ??= new self($value); - return self::$registry[$value]; - } - /** @return self::* */ public function getLevelValue(): int { @@ -75,19 +66,19 @@ public function getLevelValue(): int /** @api */ public static function typeOnly(): self { - return self::create(self::TYPE_ONLY); + return self::$registry[self::TYPE_ONLY] ??= new self(self::TYPE_ONLY); } /** @api */ public static function value(): self { - return self::create(self::VALUE); + return self::$registry[self::VALUE] ??= new self(self::VALUE); } /** @api */ public static function precise(): self { - return self::create(self::PRECISE); + return self::$registry[self::PRECISE] ??= new self(self::PRECISE); } /** @@ -97,7 +88,7 @@ public static function precise(): self */ public static function cache(): self { - return self::create(self::CACHE); + return self::$registry[self::CACHE] ??= new self(self::CACHE); } public function isTypeOnly(): bool From eb3bf9d39cfb7efd53bdcb117574d8e2bc23b7d7 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 25 Jun 2026 09:38:30 +0200 Subject: [PATCH 2/3] more micro optimization --- src/Type/VerbosityLevel.php | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/Type/VerbosityLevel.php b/src/Type/VerbosityLevel.php index a4066fca481..af7543162c9 100644 --- a/src/Type/VerbosityLevel.php +++ b/src/Type/VerbosityLevel.php @@ -50,6 +50,14 @@ final class VerbosityLevel /** @var self[] */ private static array $registry; + private static self $TYPE_ONLY; + + private static self $VALUE; + + private static self $PRECISE; + + private static self $CACHE; + /** * @param self::* $value */ @@ -66,19 +74,19 @@ public function getLevelValue(): int /** @api */ public static function typeOnly(): self { - return self::$registry[self::TYPE_ONLY] ??= new self(self::TYPE_ONLY); + return self::$TYPE_ONLY ??= self::$registry[self::TYPE_ONLY] ??= new self(self::TYPE_ONLY); } /** @api */ public static function value(): self { - return self::$registry[self::VALUE] ??= new self(self::VALUE); + return self::$VALUE ??= self::$registry[self::VALUE] ??= new self(self::VALUE); } /** @api */ public static function precise(): self { - return self::$registry[self::PRECISE] ??= new self(self::PRECISE); + return self::$PRECISE ??= self::$registry[self::PRECISE] ??= new self(self::PRECISE); } /** @@ -88,7 +96,7 @@ public static function precise(): self */ public static function cache(): self { - return self::$registry[self::CACHE] ??= new self(self::CACHE); + return self::$CACHE ??= self::$registry[self::CACHE] ??= new self(self::CACHE); } public function isTypeOnly(): bool From 5616ccbccfd82664dc8589f64a0b541aa0189a90 Mon Sep 17 00:00:00 2001 From: Markus Staab Date: Thu, 25 Jun 2026 09:40:00 +0200 Subject: [PATCH 3/3] Update VerbosityLevel.php --- src/Type/VerbosityLevel.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Type/VerbosityLevel.php b/src/Type/VerbosityLevel.php index af7543162c9..ea8a328f6a5 100644 --- a/src/Type/VerbosityLevel.php +++ b/src/Type/VerbosityLevel.php @@ -74,19 +74,19 @@ public function getLevelValue(): int /** @api */ public static function typeOnly(): self { - return self::$TYPE_ONLY ??= self::$registry[self::TYPE_ONLY] ??= new self(self::TYPE_ONLY); + return self::$TYPE_ONLY ??= (self::$registry[self::TYPE_ONLY] ??= new self(self::TYPE_ONLY)); } /** @api */ public static function value(): self { - return self::$VALUE ??= self::$registry[self::VALUE] ??= new self(self::VALUE); + return self::$VALUE ??= (self::$registry[self::VALUE] ??= new self(self::VALUE)); } /** @api */ public static function precise(): self { - return self::$PRECISE ??= self::$registry[self::PRECISE] ??= new self(self::PRECISE); + return self::$PRECISE ??= (self::$registry[self::PRECISE] ??= new self(self::PRECISE)); } /** @@ -96,7 +96,7 @@ public static function precise(): self */ public static function cache(): self { - return self::$CACHE ??= self::$registry[self::CACHE] ??= new self(self::CACHE); + return self::$CACHE ??= (self::$registry[self::CACHE] ??= new self(self::CACHE)); } public function isTypeOnly(): bool