Review this generated status parser before it handles API requests.
Require a status field containing an exact lowercase backing value, reject missing, malformed, or unknown input, and state cancellation policy explicitly for every case so new cases require a deliberate decision.
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,
};
}
}
generated code is illustrative, not from any one model