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