根据 PHP 手册
如果将 Pure Enum 序列化为 JSON,则会引发错误。如果支持的枚举被序列化为 JSON,它将仅由其值标量以适当的类型表示。通过实现 JsonSerializable 可以覆盖两者的行为
让我们尝试实现JsonSerializable
enum Suit implements JsonSerializable
{
case Hearts;
case Diamonds;
case Clubs;
case Spades;
public function jsonSerialize(): array {
return [1, 2, 3, 4];
}
}
echo json_encode(Suit::cases());
它打印:
[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
为什么[1,2,3,4]
重复4次?
如何enum
在序列化过程中控制每个案例?