3v4l.org

run code in 300+ PHP versions simultaneously
<?php enum Language: int { case English = 1; case Spanish = 2; public static function fromName(string $name): Language { $cases = static::cases(); foreach($cases as $case) { if ($case->name === $name) { return $case; } } throw new Error(sprintf('Invalid enum case name "%s"', $name)); } } $english = Language::from(1); $spanish = Language::from(2); $english = Language::fromName('English'); $spanish = Language::fromName('Spanish'); var_dump([ 'name' => $english->name, 'value' => $english->value, ]); // this will result in an error: Language::fromName('Arabic');
Output for 8.1.3 - 8.1.34, 8.2.22 - 8.2.30, 8.3.5 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
array(2) { ["name"]=> string(7) "English" ["value"]=> int(1) } Fatal error: Uncaught Error: Invalid enum case name "Arabic" in /in/c0N7Y:17 Stack trace: #0 /in/c0N7Y(35): Language::fromName('Arabic') #1 {main} thrown in /in/c0N7Y on line 17
Process exited with code 255.

preferences:
54.73 ms | 743 KiB | 4 Q