Konsep MVC (Model-View-Controller)
MVC adalah pola desain perangkat lunak (Architecture Pattern) yang memisahkan kode menjadi tiga bagian utama. Hampir semua framework web modern (termasuk Laravel) menggunakan konsep ini.
Kenapa Butuh MVC?
Sejauh ini, saat kita membuat file index.php atau tambah.php, kita mencampur 3 hal di dalam satu file:
- Kode akses ke database (
$pdo->query(...)) - Logika program (Cek
$_POST, validasiif-else) - Tampilan HTML (
<html>,<table>,foreach)
Cara ini disebut Spaghetti Code karena semuanya kusut bercampur. Jika websitenya membesar, kode akan sangat sulit dikelola.
1. Pemisahan Tugas (Separation of Concerns)
MVC menyelesaikan masalah tersebut dengan membagi tugas:
1. Model (Data / Database)
Tugasnya hanya berurusan dengan data.
- Menyimpan query SQL.
- Mengatur validasi ke database.
- Contoh:
User.php(Berisi fungsi untuk tambah user, hapus user, dll).
2. View (Tampilan / HTML)
Tugasnya hanya menampilkan antarmuka (User Interface).
- Berisi tag HTML, CSS, JavaScript.
- Tidak boleh ada query database di sini!
- Contoh:
index.html,tambah_user.php.
3. Controller (Otak / Pengatur Lalu Lintas)
Tugasnya menjadi perantara antara Model dan View.
- Menerima request (klik tombol, input form) dari User.
- Meminta data ke Model.
- Mengirim data tersebut ke View untuk ditampilkan.
- Contoh:
UserController.php.
2. Analogi Restoran (Lagi) π½οΈ
Ingat analogi restoran? Ini hubungannya dengan MVC:
Alur kerjanya:
- Pelanggan (Browser) pesan Nasi Goreng ke Pelayan (Controller).
- Pelayan menyuruh Koki (Model) untuk masak Nasi Goreng.
- Koki mengambil bahan dari kulkas (Database) dan selesai memasak.
- Pelayan menata makanan ke Piring (View) dan menyajikannya ke Pelanggan.
Piring tidak tahu cara memasak, koki tidak peduli makanan disajikan di piring warna apa. Masing-masing fokus pada tugasnya.
3. Ilustrasi MVC dalam Kode
Mari kita lihat bedanya kode Spaghetti vs MVC.
β Cara Lama (Spaghetti Code)
Satu file untuk semua.
β Cara Baru (Konsep MVC)
Tugas dipisah menjadi 3 bagian.
1. Model (ProdukModel.php)
2. View (produk_view.php)
3. Controller (ProdukController.php)
Meskipun MVC terlihat membuat file lebih banyak, percayalah: Saat aplikasi web memiliki puluhan tabel dan ratusan halaman, arsitektur MVC akan menyelamatkan hidup (dan kewarasan) kamu sebagai developer.
Selanjutnya
Kita sudah tahu OOP dan MVC. Sebelum masuk ke Laravel, ada satu alat lagi yang wajib dikuasai untuk mengelola library PHP: Composer β.