3v4l.org

run code in 300+ PHP versions simultaneously
<?php enum MyEnum: string { case FOO = 'FOO'; } enum MyEnumWithJson: string implements \JsonSerializable { case FOO = 'FOO'; public function jsonSerialize(): mixed { return $this->value . '[jsonSerialize]'; } } $myEnum = MyEnum::FOO; echo json_encode($myEnum); var_dump([ 'isObject' => is_object($myEnum), 'isJsonSerializable' => $myEnum instanceof JsonSerializable, ]); echo "\n"; $myEnumWithJson = MyEnumWithJson::FOO; echo json_encode($myEnumWithJson); var_dump([ 'isObject' => is_object($myEnumWithJson), 'isJsonSerializable' => $myEnumWithJson instanceof JsonSerializable, ]);
Output for 8.3.0 - 8.3.30, 8.4.1 - 8.4.18, 8.5.0 - 8.5.3
"FOO"array(2) { ["isObject"]=> bool(true) ["isJsonSerializable"]=> bool(false) } "FOO[jsonSerialize]"array(2) { ["isObject"]=> bool(true) ["isJsonSerializable"]=> bool(true) }

preferences:
43.44 ms | 718 KiB | 4 Q