Aplikasi Laravel memproses data secara kondisional: tampilkan tombol hanya jika pengguna sudah login, kirim email hanya jika status berubah, render daftar tugas baris demi baris. Struktur kontrol PHP — if, match, for, foreach, while, break, dan continue — adalah tulang punggung logika tersebut. Chapter ini menyegarkan tujuh struktur tersebut dengan fokus pada dua yang paling dominan di Laravel: if untuk percabangan dan foreach untuk perulangan data.
Percabangan dengan if #
Struktur if mengeksekusi blok kode hanya ketika kondisi bernilai true. Kata kunci elseif menguji kondisi berikutnya, sedangkan else menampung sisa kondisi:
<?php
$stok = 3;
if ($stok === 0) {
echo "Status: habis\n";
} elseif ($stok < 5) {
echo "Status: menipis\n";
} else {
echo "Status: aman\n";
}Output yang Dihasilkan:
Status: menipisInterpreter mengevaluasi kondisi dari atas ke bawah dan berhenti pada cabang pertama yang bernilai true. Karena $stok bernilai 3, cabang $stok === 0 gagal (perbandingan ketat int dengan int, nilai beda), lalu cabang $stok < 5 terpenuhi — blok else tidak pernah dievaluasi.
Match Expression untuk Banyak Cabang #
PHP 8 memperkenalkan match, sebuah ekspresi (bukan statement) yang membandingkan satu nilai terhadap banyak cabang secara ketat lalu menghasilkan nilai. Kode internal Laravel banyak memakai match karena bentuknya ringkas dan aman:
<?php
$metode = "bca";
$label = match ($metode) {
"bca" => "Transfer BCA",
"mandiri" => "Transfer Mandiri",
"gopay" => "GoPay",
default => "Metode tidak dikenal",
};
echo $label, "\n";Output yang Dihasilkan:
Transfer BCAKarena match adalah ekspresi, hasilnya langsung disimpan ke variabel $label tanpa perlu echo di dalam setiap cabang. Perbandingan pada match selalu ketat (===), dan ketika tidak ada cabang yang cocok, PHP melempar UnhandledMatchError — error nyata yang pernah kita lihat saat menguji nilai "ovo" tanpa cabang default.
for dan while untuk Iterasi Berhitung #
Loop for cocok ketika jumlah pengulangan sudah diketahui, sedangkan while mengulang selama kondisi masih true:
<?php
for ($i = 1; $i <= 3; $i++) {
echo "Iterasi ke-$i\n";
}
$sisaTugas = 3;
$nomor = 1;
while ($sisaTugas > 0) {
echo "Mengerjakan tugas $nomor\n";
$sisaTugas--;
$nomor++;
}
echo "Semua tugas selesai\n";Output yang Dihasilkan:
Iterasi ke-1
Iterasi ke-2
Iterasi ke-3
Mengerjakan tugas 1
Mengerjakan tugas 2
Mengerjakan tugas 3
Semua tugas selesaiLoop for menjalankan tiga bagian dalam kurung: inisialisasi $i = 1, kondisi $i <= 3, dan kenaikan $i++ setelah setiap iterasi. Loop while di atas membaca dan menurunkan variabel $sisaTugas sampai nilainya mencapai nol.
foreach — Loop Utama di Laravel #
Loop foreach menelusuri elemen array tanpa perlu mengelola indeks manual. Bentuknya dua macam: nilai saja, atau kunci => nilai:
<?php
$tugas = ["Belajar route", "Buat migration", "Tulis test"];
foreach ($tugas as $index => $judul) {
echo ($index + 1), ". $judul\n";
}
$konfigurasi = [
"driver" => "database",
"prefix" => "laravel_",
];
foreach ($konfigurasi as $kunci => $nilai) {
echo "$kunci => $nilai\n";
}Output yang Dihasilkan:
1. Belajar route
2. Buat migration
3. Tulis test
driver => database
prefix => laravel_Setiap iterasi pertama mengambil satu elemen array $tugas, menyimpan indeks ke $index dan nilainya ke $judul. Bentuk $kunci => $nilai adalah cara standar membaca associative array — struktur yang kita bahas tuntas pada chapter Array.
break dan continue #
Kata kunci break menghentikan loop lebih awal, sedangkan continue melewati sisa iterasi saat ini dan langsung lanjut ke iterasi berikutnya:
<?php
$antrian = ["email", "laporan", "cache", "backup"];
$selesai = [];
foreach ($antrian as $pekerjaan) {
if ($pekerjaan === "cache") {
continue; // lewati pekerjaan cache
}
if (count($selesai) === 2) {
break; // berhenti setelah 2 pekerjaan selesai
}
$selesai[] = $pekerjaan;
}
echo "Selesai: ", implode(", ", $selesai), "\n";Output yang Dihasilkan:
Selesai: email, laporanKetika $pekerjaan bernilai "cache", kata kunci continue membuat interpreter melompat ke elemen berikutnya tanpa mengeksekusi baris di bawahnya. Pekerjaan "backup" tidak pernah diproses karena break keluar dari loop begitu count($selesai) mencapai dua.
Dari Blade ke foreach Murni #
Berita menarik: ketika kita menulis @foreach di template Blade
, compiler Blade menerjemahkan direktif tersebut menjadi loop foreach PHP biasa. Berikut hasil kompilasi nyata dari @foreach ($tugas as $judul) ... @endforeach:
<?php $__currentLoopData = $tugas; $__env->addLoop($__currentLoopData);
foreach($__currentLoopData as $judul):
$__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); ?>
<li><?php echo e($judul); ?></li>
<?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); ?>
Variabel $__currentLoopData hanyalah array $tugas yang dibungkus agar Blade bisa menyediakan variabel $loop (berisi $loop->first, $loop->iteration, dan seterusnya). Memahami foreach PHP berarti otomatis memahami @foreach Blade — tinggal lapisan tipis di atasnya.
Struktur kontrol yang kita kuasai di chapter ini mengeksekusi logika sebaris. Untuk logika yang dipakai berulang di banyak tempat, PHP menyediakan fungsi — topik chapter berikutnya.