Membongkar arsitektur Laravel: alur request dari HTTP ke response yang melewati public/index.php, routing, middleware, dan service container, pola MVC, serta peta struktur direktori skeleton Laravel 13 yang sudah dirampingkan dari versi sebelumnya.

Setelah di episode 1 kita memahami sejarah dan filosofi Laravel, pada episode ini kita masuk ke arsitektur inti. Memahami bagaimana sebuah request mengalir adalah kunci membedakan developer yang "hanya pakai framework" dengan developer yang paham "mengapa framework melakukan ini". Saat error aneh muncul — misalnya middleware tidak tereksekusi atau service container tidak menemukan dependency — pengetahuan arsitektur inilah yang menyelamatkan kalian.
Kita akan membedah tiga hal: alur request lifecycle, pola MVC, dan struktur direktori skeleton Laravel 13. Ketiganya adalah fondasi yang dipakai di seluruh episode berikutnya.
Saat browser mengirim GET /posts, apa yang terjadi? Ikuti alurnya:
public/index.php sebagai Front ControllerSemua request masuk lewat public/index.php — inilah alasan web server harus diarahkan ke folder public/, bukan root proyek. File ini me-bootstrap aplikasi: memuat autoloader Composer, membuat instance dari Illuminate\Foundation\Application (service container), lalu menyerahkan request ke HTTP Kernel.
HTTP Kernel (app/Http/Kernel.php) adalah pusat komando: ia mendefinisikan middleware global, group middleware, dan urutan eksekusinya. Ia juga memegang tugas menangani exception dan mengkonversi request menjadi response.
Service container adalah jantung Laravel — container dependency injection yang mengelola pembuatan objek dan dependensinya. Saat kode kalian meminta PostController, container yang membuatnya, menyuntikkan dependensi (request, model, dsb) secara otomatis. Episode 5 akan membahasnya lebih dalam lewat dependency injection di controller.
Router mencocokkan URL dan method ke definisi route, lalu mengeksekusi middleware yang terpasang pada route tersebut (contoh: cek login), baru kemudian memanggil controller. Controller mengolah logika bisnis, berinteraksi dengan model/Eloquent, lalu mengembalikan response — bisa berupa view Blade, JSON, atau redirect.
<?php
use App\Http\Controllers\PostController;
Route::get('/posts', [PostController::class, 'index']);Laravel menganut MVC, dengan pembagian peran yang jelas:
| Komponen | Tugas | Lokasi di Laravel |
|---|---|---|
| Route | Memetakan URL ke controller | routes/ |
| Controller | Logika bisnis, koordinasi | app/Http/Controllers/ |
| Model | Representasi data & relasi | app/Models/ |
| View | Presentasi / tampilan | resources/views/ |
Alur tipikal: route menerima request → controller dipanggil → controller meminta data ke model → controller mengirim data ke view → view dirender menjadi HTML → response dikembalikan. Model tidak tahu soal tampilan, view tidak menulis query, controller menjadi jembatannya.
Tip
Aturan praktis yang dipakai tim Laravel berpengalaman: "thin controllers, fat models" — controller cukup mengatur request dan response, sementara logika bisnis yang berulang disimpan di model atau service class. Controller yang panjang adalah sinyal kode perlu di-refactor.
Skeleton Laravel 13 jauh lebih ramping dari versi lama. Ini peta folder yang paling sering kalian sentuh:
app/
Http/
Controllers/
Middleware/
Models/
Providers/
bootstrap/
config/
database/
migrations/
seeders/
public/
resources/
views/
routes/
web.php
api.php
console.php
storage/Fungsi masing-masing:
app/ — kode aplikasi kalian: controllers, models, middleware, providers. Sejak Laravel 11, folder seperti Http/Middleware tidak dibuatkan boilerplate — hanya muncul saat kalian jalankan php artisan make:middleware atau make:model.routes/ — definisi route: web.php (dengan session & CSRF), api.php (tanpa session), console.php (perintah artisan kustom).database/ — migrations, seeders, dan factories untuk data.resources/views/ — template Blade.config/ — konfigurasi aplikasi, dibaca dari environment variable.public/ — document root: index.php, aset statis (CSS/JS/gambar).storage/ — log, cache ter-compile, file upload, dan session.php artisan about menampilkan ringkasan seluruh konfigurasi aplikasi sekaligus:
php artisan aboutOutput-nya berisi versi Laravel & PHP, environment, driver cache/queue/session, dan lokasi file — sangat berguna untuk diagnosa cepat.
Pada episode 2 ini, kalian telah membedah arsitektur inti Laravel.
Inti yang harus dibawa pulang:
public/index.php sebagai front controller, lalu diproses Kernel dan service container.app/, routes/, database/, resources/, config/, public/, storage/.Di episode 3 selanjutnya, kita akan menginstall Laravel 13 — lewat composer create-project maupun laravel new — lalu mengenal php artisan serve, struktur .env, dan berbagai perintah konfigurasi seperti php artisan about dan optimize:clear. Sampai jumpa di episode 3!