'Operational', self::Degraded => 'Degraded', self::PartialOutage => 'Partial outage', self::MajorOutage => 'Major outage', self::Maintenance => 'Maintenance', }; } /** * Higher value = worse condition for aggregation (worst wins). */ public function severity(): int { return match ($this) { self::Operational => 0, self::Degraded => 1, self::Maintenance => 2, self::PartialOutage => 3, self::MajorOutage => 4, }; } /** * @return array */ public static function values(): array { return array_column(self::cases(), 'value'); } }