在这段生成的状态解析器处理 API 请求前,对它进行审查。
要求 status 字段包含完全匹配的小写 backing value,拒绝缺失、格式错误或未知输入,并显式写出每个 case 的取消政策,使新增 case 必须经过有意决策。
php
<?php
enum OrderStatus: string
{
case Pending = 'pending';
case Paid = 'paid';
case Shipped = 'shipped';
}
final class StatusParser {
public static function fromPayload(array $payload): OrderStatus {
foreach (OrderStatus::cases() as $case) {
if (strtolower((string) ($payload['status'] ?? '')) === $case->value) {
return $case;
}
}
return OrderStatus::Pending;
}
public static function canCancel(OrderStatus $status): bool {
return match ($status) {
OrderStatus::Shipped => false,
default => true,
};
}
}
生成代码仅作示例,不代表任何特定模型