【发布时间】:2021-12-16 07:30:28
【问题描述】:
根据 PHP 手册
如果将 Pure Enum 序列化为 JSON,则会引发错误。如果 Backed Enum 被序列化为 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中的每个case?
【问题讨论】: