WebTech Interaktif XI RPL

Laravel · Bab 1

Framework, Laravel & Arsitektur MVC

Mengapa industri beralih dari PHP Native ke framework, komponen ekosistem Laravel, pola MVC dan alur request-response, serta untung-rugi memakai framework.

Sepanjang topik ini, kamu akan membangun Smart Retail App, aplikasi web dinamis multi-tabel dengan autentikasi, memakai framework Laravel. Hasil akhirnya adalah aplikasi yang siap kamu kembangkan menjadi proyekmu sendiri. Bab ini membangun landasan teorinya: mengapa framework dipakai, apa saja isi ekosistem Laravel, dan bagaimana pola MVC mengatur alur sebuah request.

1.1 Paradigma Native vs Framework

Jika kamu pernah membangun aplikasi web dinamis dengan PHP Native/Procedural, kamu mungkin mengenal polanya. Pada pendekatan tersebut, struktur aplikasi dibangun tanpa konvensi arsitektur yang seragam. Seluruh baris instruksi — mulai dari kueri database mentah (mysqli_query), pemrosesan variabel superglobal ($_POST), logika manipulasi data, hingga presentasi antarmuka HTML/CSS — kerap bercampur dalam satu file (spaghetti code).

Dalam standar industri rekayasa perangkat lunak modern, pendekatan native ditinggalkan saat menangani sistem skala menengah hingga besar karena beberapa kendala kritis:

  1. Rentan terhadap kerentanan keamanan (security vulnerabilities). Pengembang mudah lalai membersihkan input string mentah, sehingga memicu celah fatal seperti SQL Injection (SQLi), Cross-Site Scripting (XSS), dan Cross-Site Request Forgery (CSRF).
  2. Ketiadaan standarisasi arsitektur. Struktur direktori dan penamaan file bergantung penuh pada preferensi pribadi programmer, sehingga menyulitkan kerja kolaboratif dalam tim.
  3. Biaya pemeliharaan tinggi (high maintenance cost). Menemukan kesalahan logika (bug) pada file ratusan baris yang bercampur dengan tag HTML membutuhkan waktu penelusuran yang sangat lama.

Framework web hadir bukan untuk menggantikan bahasa PHP, melainkan sebagai kerangka kerja terstandarisasi yang menyediakan pustaka siap pakai (sistem keamanan, manajemen sesi, routing terpusat, dan abstraksi database) dengan aturan tata kelola kode yang baku.

1.2 Anatomi Framework Modern & Ekosistem Laravel

Laravel adalah framework aplikasi web modern berbasis PHP yang dirancang dengan sintaks ekspresif, elegan, dan berorientasi objek (OOP). Laravel dibangun di atas komponen-komponen teruji dari Symfony dan dikelola menggunakan manajer dependensi Composer.

Komponen inti penyusun ekosistem Laravel:

  • Artisan CLI — antarmuka baris perintah (Command Line Interface) bawaan untuk mempercepat pembuatan controller, migrasi skema tabel, seeding data, dan menjalankan server lokal.
  • Routing Engine — pintu masuk terpusat (routes/web.php) yang memetakan setiap alamat URL yang diakses peramban secara presisi ke fungsi pengendali (Controller).
  • Eloquent ORM (Object-Relational Mapping) — tabel dipetakan menjadi sebuah Class Model PHP, dan setiap baris data diakses sebagai sebuah objek. Data dapat dikelola tanpa mengetik kueri SQL manual berulang kali.
  • Blade Templating Engine — mesin antarmuka ringan yang mendukung pewarisan tata letak (layout inheritance), pemisahan komponen modular, dan sanitasi otomatis tag HTML berbahaya lewat sintaks {{ $data }}.
  • Database Migration & Seeder — sistem kendali versi (version control) untuk struktur tabel dan pengisian data awal secara seragam.

1.3 Pola Desain MVC & Alur Request-Response

Pola arsitektur Model-View-Controller (MVC) memisahkan tanggung jawab kode ke dalam tiga modul terpisah (Separation of Concerns):

  • Model (data & aturan bisnis) — mengelola interaksi dengan basis data, aturan atribut, serta relasi antar-entitas (misalnya satu kategori memiliki banyak produk).
  • View (antarmuka pengguna) — menyajikan data kepada pengguna dalam format HTML/CSS.
  • Controller (pengatur alur logika) — penghubung. Controller menerima request dari Route, meminta data ke Model, memproses logika, lalu mengirimkan hasilnya ke View.

Alur sebuah request saat pengguna membuka halaman daftar produk:

 [User / Browser Client]
             │
     (1) HTTP Request (GET /products)
             ▼
      ┌───────────────┐
      │ routes/web.php│ ──(2) Route to Controller Method──┐
      └───────────────┘                                   │
                                                          ▼
      ┌───────────────┐                            ┌──────────────┐
      │   DATABASE    │ <──(4) Execute Eloquent─── │  Controller  │
      │    (MySQL)    │ ───(5) Return Objects─────>└──────────────┘
      └───────────────┘                                   │
                                                          │ (6) Send data via
                                                          ▼     compact()
      ┌───────────────┐                            ┌──────────────┐
      │ Final Render  │ <──(8) Return HTML Output─ │  Blade View  │
      │    Browser    │                            │ (index.blade)│
      └───────────────┘                            └──────────────┘

1.4 Komparasi: Keunggulan dan Konsekuensi Framework

ParameterPHP Native / ProseduralFramework Laravel (MVC Modern)
Kecepatan awal proyekSangat cepat untuk skrip mini 1 halaman.Membutuhkan instalasi dependensi awal via Composer.
Keamanan bawaanBergantung ketelitian manual programmer.Secure by default: otomatis memproteksi token CSRF, prepared statements (SQLi), dan sanitasi XSS.
Skalabilitas & timSulit dikembangkan bersama dalam tim besar.Sangat terstruktur; pembagian tugas backend (Controller/Model) dan frontend (Blade) jelas.
Konsumsi sumber dayaKonsumsi memori server sangat rendah.Memerlukan RAM server lebih besar untuk memuat arsitektur framework.
Abstraksi databaseMengetik SQL mentah (SELECT, JOIN, INSERT).Eloquent ORM berbasis method ekspresif (Product::with('category')->get()).