Learn
← Previous Next →

Hari 16: PHP 8 — Match, Named Args & Fibers

60 min Last updated 09 Apr 2026

Match Expression (PHP 8)

$kode = 404;
$pesan = match($kode) {
    200, 201 => "Sukses",
    301, 302 => "Redirect",
    400      => "Bad Request",
    404      => "Not Found",
    500      => "Server Error",
    default  => "Kode tidak dikenal",
};
echo $pesan; // Not Found

Named Arguments (PHP 8)

function buat_profil(string $nama, int $umur = 0, string $kota = "Jakarta"): string {
    return "$nama ($umur) — $kota";
}

// Named args — urutan bebas, jelas
echo buat_profil(umur: 25, nama: "Budi");
// Budi (25) — Jakarta

Nullsafe Operator (PHP 8)

class User { public ?Address $alamat = null; }
class Address { public string $kota = "Jakarta"; }

$user = new User();
// Tanpa nullsafe: $user->alamat !== null ? $user->alamat->kota : null
// Dengan nullsafe:
echo $user?->alamat?->kota ?? "Tidak ada kota"; // Tidak ada kota

💡 Notice: match(true) memungkinkan kondisi range, berbeda dengan match($var) yang perbandingan exact.

Assignment

Buat fungsi klasifikasi_bmi(float $bmi): string menggunakan match expression. < 18.5 = "Kurus", 18.5-24.9 = "Normal", 25-29.9 = "Gemuk", >= 30 = "Obesitas". Tampilkan hasil untuk BMI 17.5, 22.0, 27.3, 31.5.

Expected output:

17.5: Kurus
22: Normal
27.3: Gemuk
31.5: Obesitas
PHP index.php
Solution
Output