BAB 3: Pengenalan Framework

Konsep dasar framework MVC dan bagaimana Laravel mengimplementasikannya dalam struktur proyek.

Dengan PHP, Composer, dan Laravel Installer yang sudah siap, kamu bisa langsung membuat proyek dan menjalankannya. Tapi ada satu pertanyaan yang lebih penting untuk dijawab sebelum itu: bagaimana Laravel berpikir? Apa yang terjadi di balik layar ketika browser meminta halaman, dan bagaimana Laravel memutuskan kode mana yang harus dijalankan?

Memahami cara kerja framework sebelum menggunakannya bukan pemborosan waktu — justru inilah yang membedakan developer yang bisa mengikuti tutorial dengan developer yang bisa memecahkan masalah sendiri.

Apa Itu Framework

Framework adalah kerangka kerja yang menyediakan struktur dan seperangkat aturan untuk membangun aplikasi. Bayangkan membangun rumah: kamu bisa memulai dari menggali fondasi sendiri, membuat bata satu per satu, dan merancang sistem listrik dari nol — atau kamu bisa bekerja dengan kontraktor yang sudah punya sistem, alat, dan konvensi yang terbukti efisien.

Framework adalah kontraktor itu. Ia membawa keputusan-keputusan yang sudah dipikirkan matang: di mana menyimpan file, bagaimana menangani request HTTP, cara berinteraksi dengan database. Kamu tidak harus memikirkan semuanya dari awal — kamu tinggal fokus pada logika unik aplikasi yang sedang dibangun.

Yang perlu dipahami: framework bukan keajaiban. Semua yang dilakukan Laravel bisa kamu lakukan dengan PHP murni — hanya saja butuh waktu berbulan-bulan untuk membangun infrastruktur yang setara, dan hasilnya kemungkinan besar tidak se-battle-tested Laravel.

Pola MVC di Laravel

Di Bab 1, kita sudah melihat gambaran MVC secara sekilas. Sekarang mari kita lihat lebih dalam bagaimana pola ini hidup di dalam proyek Laravel nyata.

MVC membagi aplikasi menjadi tiga lapisan dengan tanggung jawab yang berbeda:

Model mengelola data. Ia berbicara dengan database, mendefinisikan aturan bisnis yang berkaitan dengan data, dan menyediakan antarmuka untuk mengambil atau menyimpan informasi. Di Laravel, setiap tabel database biasanya punya satu class Model yang merepresentasikannya.

View menangani tampilan. Ia menerima data dari Controller dan mengubahnya menjadi HTML yang dikirim ke browser. View tidak boleh berisi logika bisnis — tugasnya hanya menampilkan data yang sudah disiapkan.

Controller adalah penghubung. Ia menerima request dari browser, meminta data yang diperlukan dari Model, lalu menyerahkan data itu ke View yang tepat. Controller adalah pengatur lalu lintas aplikasi.

Berikut alur lengkap ketika pengguna membuka halaman daftar catatan di SimpanNotes:

Diagram alur request Laravel dari Browser ke Router, Controller, Model, View, dan kembali ke Browser

Gambar 1: Alur request MVC di Laravel

Alur ini terjadi di setiap request. Memahaminya membuatmu tahu persis di mana harus mencari atau menaruh kode untuk tugas tertentu.

Struktur Direktori Laravel

Saat membuat proyek Laravel baru, kamu akan menemukan struktur direktori yang sudah terorganisir. Setiap folder punya tujuan yang jelas:

simpannotes/
├── app/
│   ├── Http/
│   │   ├── Controllers/    ← Controller disimpan di sini
│   │   └── Middleware/     ← Filter request HTTP
│   └── Models/             ← Model Eloquent
├── database/
│   ├── migrations/         ← Definisi skema tabel
│   └── seeders/            ← Data awal database
├── resources/
│   └── views/              ← File Blade (tampilan)
├── routes/
│   └── web.php             ← Definisi rute aplikasi web
├── public/
│   └── index.php           ← Entry point semua request
├── config/                 ← Konfigurasi aplikasi
├── .env                    ← Environment variables (db, mail, dll)
└── artisan                 ← CLI Laravel

Yang perlu diingat sekarang adalah empat direktori utama: app/Http/Controllers untuk Controller, app/Models untuk Model, resources/views untuk View, dan routes/web.php untuk mendefinisikan URL mana yang ditangani oleh Controller mana.

Direktori lainnya akan kamu kenali secara organik saat menggunakannya di bab-bab selanjutnya.

Service Container dan Dependency Injection

Laravel punya satu konsep arsitektur yang perlu kamu tahu sejak awal, meski tidak harus kamu pahami sepenuhnya sekarang: Service Container.

Service Container adalah kotak peralatan cerdas yang Laravel gunakan untuk membangun objek. Alih-alih kamu membuat instance class secara manual dengan new KelasA(), Laravel membuatkannya untukmu — termasuk menyuntikkan semua dependency yang dibutuhkan KelasA secara otomatis.

// Tanpa dependency injection — kamu buat manual
$mailer = new Mailer();
$service = new KirimNotifikasi($mailer);

// Dengan Laravel — framework yang mengurus semuanya
class KirimNotifikasiController extends Controller
{
    public function __construct(private KirimNotifikasi $service) {}
    // Laravel otomatis menyuntikkan KirimNotifikasi beserta Mailer-nya
}

Ini yang membuat kode Laravel terasa bersih: kamu mendefinisikan apa yang dibutuhkan, dan framework yang mengurus bagaimana menyediakannya.

Kamu akan menemui Service Container secara tidak langsung sejak pertama kali membuat Controller. Tidak perlu mendalaminya sekarang — cukup tahu bahwa Laravel yang mengurus penciptaan objek di belakang layar.

Lifecycle Sebuah Request

Satu hal lagi yang penting dipahami sebelum mulai menulis kode: apa yang terjadi dari saat browser mengirim request sampai HTML dikembalikan.

Semua request masuk melalui public/index.php. File ini mem-bootstrap framework — memuat semua konfigurasi, mendaftarkan service providers, dan menyiapkan aplikasi. Setelah itu, request diteruskan ke Router yang mencocokkan URL dengan definisi rute di routes/web.php. Router memanggil Controller yang sesuai, Controller berinteraksi dengan Model jika perlu, lalu mengembalikan response — bisa berupa View yang dirender menjadi HTML, atau data JSON untuk API.

Seluruh proses ini berjalan dalam hitungan milidetik. Yang kamu tulis sebagai developer hanya bagian tengahnya: definisi rute, logika Controller, dan template View. Sisanya diurus Laravel.

Pemahaman ini adalah fondasi yang akan membuat segalanya lebih masuk akal saat kita mulai menulis kode. Langkah berikutnya adalah melihat fitur-fitur utama yang membuat Laravel menjadi pilihan developer di seluruh dunia.

Referensi

  1. 1Request Lifecycle — Laravel 12.x Documentation
  2. 2Service Container — Laravel 12.x Documentation
  3. 3Directory Structure — Laravel 12.x Documentation