Laravel Request Lifecycle
Laravel Request Lifecycle adalah urutan proses yang dilalui oleh sebuah request (HTTP request) dari saat diterima oleh server hingga respons dikirimkan kembali ke browser pengguna.
Beberapa poin ini memberikan gambaran umum bagaimana Laravel memproses request dan mengembalikan respons.
1. Entry Point: public/index.php
Semua request ke aplikasi Laravel diarahkan ke file public/index.php oleh konfigurasi server web (seperti Apache atau Nginx). File ini berfungsi sebagai titik awal untuk memuat bagian framework lainnya:
- Memuat definisi autoloader yang dihasilkan oleh Composer.
- Mengambil instance aplikasi Laravel dari
bootstrap/app.php.
2. HTTP/Console Kernels
Request kemudian dikirim ke HTTP Kernel (handleRequest) atau Console Kernel (handleCommand), tergantung jenis interaksinya. HTTP untuk web, console untuk console/terminal. Kernel mendefinisikan array bootstrappers yang berjalan sebelum request dieksekusi, seperti mengonfigurasi penanganan kesalahan, logging, dan deteksi lingkungan.
3. Service Providers
Langkah bootstrapping kernel yang paling krusial adalah memuat Service Providers. Mereka bertanggung jawab untuk menginisialisasi semua komponen utama framework seperti database, antrean (queue), validasi, dan routing.
- Laravel mengiterasi daftar provider dan memanggil metode
register()pada semuanya. - Setelah semua terdaftar, metode
boot()dipanggil sehingga provider dapat bergantung pada ketersediaan semua binding di container.
Setelah service provider dimuat, sebelum masuk ke routing, global middleware dieksekusi.
4. Routing
Setelah aplikasi di-bootstrap dan provider terdaftar, objek Request diserahkan ke Router untuk di-dispatch. Router mengarahkan permintaan ke rute atau controller yang sesuai.
Middleware khusus untuk kelompok route, atau untuk route dan controller tertentu hanya dijalankan apabila mencocoki aturan routing yang berlaku.
5. Finishing Up - Kembali ke Entry Point (public/index.php)
Route dan controller melakukan eksekusi fungsi tertentu sesuai yang sudah diprogram.
Setelah rute atau controller mengeluarkan respons, respons tersebut akan menempuh jalan keluar kembali melalui rantai middleware yang sama, memberi kesempatan aplikasi untuk memodifikasi respons keluar.
Perjalanan balik dari route/controller kembali ke entry point index.php untuk keluar memberikan respons kepada user. Perjalanan ini ditempuh dengan melalui tumpukan middleware yang sebelumnya telah dilalui.
Setelah respons keluar dari semua middleware, metode handle() pada HTTP Kernel mengembalikan objek respons ke index.php, yang kemudian memanggil metode send(). Metode ini mengirimkan konten respons langsung ke browser pengguna.
File public/index.php adalah satu-satunya titik masuk.
Setelah request selesai diproses, respons di-return oleh public/index.php juga.
- Entry Point:
index.phpmemicu Kernel.
→ (melalui middleware) - Pivot Point: Controller/Routing mengeksekusi request.
→ (melalui middleware) - Exit Point:
index.phpmenembakkan hasil akhirnya ke dunia luar.