3v4l.org

run code in 300+ PHP versions simultaneously
<?php enum Gender { case UNKNOWN; case MALE; case FEMALE; } /** * @template T as BackedEnum|UnitEnum * @param class-string<T> $enumClass * @param string $name * @return T|null */ function tryFromName(string $enumClass, string $name) { $constName = $enumClass . '::' . $name; return is_subclass_of($enumClass, UnitEnum::class) && defined($constName) ? constant($constName) : null; } var_dump(tryFromName(Gender::class, 'UNKNOWN'));// enum(Gender::UNKNOWN) var_dump(tryFromName(Gender::class, 'MALE'));// enum(Gender::MALE) var_dump(tryFromName(Gender::class, 'FEMALE'));// enum(Gender::FEMALE) var_dump(tryFromName(Gender::class, 'null'));// NULL
Output for 8.1.23 - 8.1.34, 8.2.10 - 8.2.30, 8.3.5 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
enum(Gender::UNKNOWN) enum(Gender::MALE) enum(Gender::FEMALE) NULL
Output for 8.0.30
Parse error: syntax error, unexpected identifier "Gender" in /in/8R2fP on line 3
Process exited with code 255.
Output for 7.2.7
Parse error: syntax error, unexpected 'Gender' (T_STRING) in /in/8R2fP on line 3
Process exited with code 255.

preferences:
67.95 ms | 773 KiB | 4 Q