Learn
← Previous Next →

Hari 20: Enum (PHP 8.1)

50 min Last updated 09 Apr 2026

Enum — Tipe Data Enumerasi

// Pure enum
enum Status {
    case Aktif;
    case NonAktif;
    case Pending;
}

$s = Status::Aktif;
echo $s->name;  // Aktif

// Backed enum (dengan nilai)
enum Warna: string {
    case Merah  = "red";
    case Hijau  = "green";
    case Biru   = "blue";
}

echo Warna::Merah->value; // red
$w = Warna::from("green"); // Warna::Hijau
echo $w->name; // Hijau

Enum dengan Method

enum Hari: int {
    case Senin    = 1;
    case Selasa   = 2;
    case Rabu     = 3;
    case Kamis    = 4;
    case Jumat    = 5;
    case Sabtu    = 6;
    case Minggu   = 7;

    public function isWeekend(): bool {
        return match($this) {
            self::Sabtu, self::Minggu => true,
            default => false,
        };
    }

    public function label(): string {
        return $this->name;
    }
}

echo Hari::Sabtu->isWeekend() ? "Weekend" : "Weekday";  // Weekend
echo Hari::Senin->isWeekend() ? "Weekend" : "Weekday";  // Weekday

💡 Notice: Level::cases() return array semua case. $level->name return nama case sebagai string.

Assignment

Buat backed enum Level dengan case Beginner="beginner", Intermediate="intermediate", Advanced="advanced" dan method emoji(): string yang return 🟢, 🟡, 🔴 sesuai level. Tampilkan emoji dan name untuk ketiga level.

Expected output:

🟢 Beginner
🟡 Intermediate
🔴 Advanced
PHP index.php
Solution
Output