Front Controller Pattern
Pernahkah kamu perhatikan bahwa di aplikasi PHP biasa, setiap halaman punya file sendiri (produk.php, login.php, checkout.php)? Ini berarti setiap file harus mengatur koneksi database, session, dan keamanan sendiri-sendiri — sangat rawan lupa dan inkonsisten.
Front Controller menyelesaikan masalah ini dengan satu file yang menjadi pintu masuk semua request.
Tanpa Front Controller vs Dengan Front Controller
Analogi
Bayangkan sebuah gedung perkantoran:
- Tanpa Front Controller = Gedung tanpa resepsionis. Tamu langsung masuk ke ruangan manapun.
- Dengan Front Controller = Gedung dengan resepsionis di lobby. Tamu harus lapor dulu, lalu diarahkan ke ruangan yang benar.
Implementasi Sederhana
1. File .htaccess — Arahkan Semua Request ke index.php
Dengan .htaccess ini:
http://toko.test/produk→ masuk keindex.php(URL:/produk)http://toko.test/login→ masuk keindex.php(URL:/login)http://toko.test/style.css→ langsung kirim file CSS (tidak lewatindex.php)
2. File index.php — Front Controller
3. Contoh Handler (Page File)
Middleware: Guard di Pintu Masuk
Karena semua request lewat satu pintu, kita bisa menambahkan pengecekan global:
Keuntungan Front Controller
Struktur Folder Recommended
NOTE
- Entry point:
public/index.php - Routes:
routes/web.phpdanroutes/api.php - Middleware:
app/Http/Middleware/
Perbedaannya: Laravel menggunakan class-based controller dan dependency injection, bukan file include.
Latihan
- Refactor project Toko Online: buat
index.phpsebagai front controller - Buat minimal 5 routes (home, produk, detail produk, login, admin)
- Tambahkan middleware untuk proteksi halaman admin
- Pastikan file CSS/JS/gambar tetap bisa diakses langsung (tidak lewat front controller)
Selanjutnya
Sekarang kamu paham arsitektur front controller. Lanjut ke Environment & Config → untuk belajar memisahkan konfigurasi sensitif dari kode.