3v4l.org

run code in 500+ 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.2.31 - 8.2.32, 8.3.0 - 8.3.33, 8.4.1 - 8.4.24, 8.5.0 - 8.5.9
"FOO"array(2) { ["isObject"]=> bool(true) ["isJsonSerializable"]=> bool(false) } "FOO[jsonSerialize]"array(2) { ["isObject"]=> bool(true) ["isJsonSerializable"]=> bool(true) }

preferences:
57.22 ms | 765 KiB | 4 Q