3v4l.org

run code in 500+ PHP versions simultaneously
<?php enum Foo: int { case Foo = 0; } enum Bar: string { case Bar = 'baz'; } enum Baz { case Baz; } function get_backing_type(string $enum_class): ?string { return (new ReflectionEnum($enum_class))->getBackingType()?->getName(); } function is_int_enum(string $enum_class): bool { return get_backing_type($enum_class) === 'int'; } function is_string_enum(string $enum_class): bool { return get_backing_type($enum_class) === 'string'; } var_dump(get_backing_type(Foo::class)); var_dump(get_backing_type(Bar::class)); var_dump(get_backing_type(Baz::class)); var_dump(is_int_enum(Foo::class)); var_dump(is_string_enum(Bar::class));
Output for 8.1.30 - 8.1.34, 8.2.24 - 8.2.30, 8.3.5 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
string(3) "int" string(6) "string" NULL bool(true) bool(true)

preferences:
50.39 ms | 719 KiB | 4 Q