true, self::UNHEALTHY, self::UNKNOWN => false, }; } /** * Get a human-readable label for the status. */ public function label(): string { return match ($this) { self::HEALTHY => 'Healthy', self::DEGRADED => 'Degraded', self::UNHEALTHY => 'Unhealthy', self::UNKNOWN => 'Unknown', }; } /** * Get the severity level for logging/alerting. * Lower values = more severe. */ public function severity(): int { return match ($this) { self::HEALTHY => 0, self::DEGRADED => 1, self::UNHEALTHY => 2, self::UNKNOWN => 3, }; } /** * Create status from a boolean health check result. */ public static function fromBoolean(bool $healthy): self { return $healthy ? self::HEALTHY : self::UNHEALTHY; } /** * Get the worst status from multiple statuses. * * @param array $statuses */ public static function worst(array $statuses): self { if (empty($statuses)) { return self::UNKNOWN; } $worstSeverity = -1; $worstStatus = self::HEALTHY; foreach ($statuses as $status) { if ($status->severity() > $worstSeverity) { $worstSeverity = $status->severity(); $worstStatus = $status; } } return $worstStatus; } }