审查生成的状态解析器

来自 枚举
PHP 8.3.33 高级 6分钟 找出 4处问题

在这段生成的状态解析器处理 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,
        };
    }
}

生成代码仅作示例,不代表任何特定模型

在试验场中打开
报告错误