Skip to content

Commit 548a4c4

Browse files
committed
Optimized by Null Coalescing Operator
1 parent bdad67b commit 548a4c4

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

src/Enum.php

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -189,11 +189,10 @@ final public static function get($enumerator)
189189
*/
190190
final public static function byValue($value)
191191
{
192-
if (!isset(self::$constants[static::class])) {
193-
self::detectConstants(static::class);
194-
}
192+
$constants = self::$constants[static::class]
193+
?? self::detectConstants(static::class);
195194

196-
$name = \array_search($value, self::$constants[static::class], true);
195+
$name = \array_search($value, $constants, true);
197196
if ($name === false) {
198197
throw new InvalidArgumentException(sprintf(
199198
'Unknown value %s for enumeration %s',
@@ -204,11 +203,8 @@ final public static function byValue($value)
204203
));
205204
}
206205

207-
if (!isset(self::$instances[static::class][$name])) {
208-
self::$instances[static::class][$name] = new static(self::$constants[static::class][$name]);
209-
}
210-
211-
return self::$instances[static::class][$name];
206+
return self::$instances[static::class][$name]
207+
?? self::$instances[static::class][$name] = new static($constants[$name]);
212208
}
213209

214210
/**
@@ -243,9 +239,7 @@ final public static function byName(string $name)
243239
*/
244240
final public static function byOrdinal(int $ordinal)
245241
{
246-
if (!isset(self::$names[static::class])) {
247-
self::detectConstants(static::class);
248-
}
242+
$constants = self::$constants[static::class] ?? self::detectConstants(static::class);
249243

250244
if (!isset(self::$names[static::class][$ordinal])) {
251245
throw new InvalidArgumentException(\sprintf(
@@ -256,11 +250,8 @@ final public static function byOrdinal(int $ordinal)
256250
}
257251

258252
$name = self::$names[static::class][$ordinal];
259-
if (isset(self::$instances[static::class][$name])) {
260-
return self::$instances[static::class][$name];
261-
}
262-
263-
return self::$instances[static::class][$name] = new static(self::$constants[static::class][$name], $ordinal);
253+
return self::$instances[static::class][$name]
254+
?? self::$instances[static::class][$name] = new static($constants[$name], $ordinal);
264255
}
265256

266257
/**

0 commit comments

Comments
 (0)