1. Request Giriş Noktası
- Request, public/index.php dosyasından başlar. Bu dosya web sunucunuz (Apache / Nginx) konfigürasyonu tarafından gelen tüm taleplerin giriş noktasıdır.
- Composer autoloader’ı yükler ve bootstrap/app.php’den Laravel uygulamasını başlatır.
2. Kernel Başlatılması
Bu kernel, HTTP taleplerini işlemek ve middleware’i yönetmekten sorumludur. Request, taleplere göre ya HTTP kernel’ine ya da konsol kernel’ine yönlendirilir. Kerneller, tüm taleplerin akışının merkezi noktasıdır. Burada, app/Http/Kernel.php’de bulunan HTTP kernel’ine odaklanacağız.
Illuminate\Foundation\Http\Kernel sınıfı başlatılır; bu sınıf, request gerçekleştirilmeden önce çalıştırılacak sınıfların listesini tanımlayan “bir bootstrapper dizisini” içerir. Bu bootstrapper’lar aşağıdaki konfigürasyonları yapar:
- Hata yönetimi
- Loglama
- Kimlik Doğrulama ve Yetkilendirme
- Uygulama ortamını tespit etme
Ayrıca, tüm taleplerin işlenmeden önce geçmesi gereken HTTP middleware listesini tanımlar. Bu middleware’ler şunları yönetir:
- HTTP oturumunu okuma ve yazma
- Cross-site request forgery (CSRF) token’ını doğrulama.
Tüm middleware’lerde handle yöntemi çağrılır, ardından response’dan sonra terminate yöntemi çağrılır. Bu yöntem, talep tamamlandıktan sonra çalışır.
3. Service Provider’lar
- Kernel’in en önemli bootstrap işlemlerinden biri, uygulamanız için service provider’ların yüklenmesidir.
- Service provider’lar, veritabanı, kuyruk, doğrulama ve yönlendirme gibi çerçevenin çeşitli bileşenlerini başlatmaktan sorumludur.
- Service Provider’lar, config/app.php dosyasında listelenir. Bu, Laravel’in uygulamanız için yükleyeceği tüm service provider’ların ana listesi veya dizisidir.
- Laravel, bunlar üzerinde döngü yapar. Laravel başlarken (bootstrap ederken), listedeki her bir provider’ı geçer ve her service provider sınıfının bir nesnesini oluşturur.
- register() ilk önce tüm provider’larda çağrılır. register()’ın amacı: Laravel’in service container’ına belirli sınıfları nasıl oluşturacağı, arayüzleri nasıl bağlayacağı veya hizmetleri nasıl yapılandıracağı hakkında bilgi vermektir.
- Tüm provider’lar kaydedildikten sonra, Laravel her biri üzerinde boot() metodunu çağırır.
-Neden Laravel, bir service provider’da register()’dan sonra boot() metodunu çağırır?
Çünkü boot() çalıştığında, diğer tüm service provider’lar kaydedilmiştir; böylece o provider’ların kaydettiği hizmetleri güvenle kullanabilirsiniz.
-Service Provider’lar neden bu kadar önemlidir?
Temelde, Laravel’in sunduğu her ana özellik, bir service provider tarafından başlatılır ve yapılandırılır. Laravel’deki her şey — yönlendirme, kuyruklar, olaylar, e-postalar, doğrulama, vb. — bu provider’lar tarafından ayarlanır. Bir paket kurduğunuzda (örneğin Cashier, Horizon vb.), genellikle onun service provider’ını config/app.php’ye eklersiniz; böylece Laravel, onu nasıl kayıt edip başlatacağını bilir.
4. Route Eşleşmesi
- Uygulamanızdaki en önemli service provider’lardan biri, App\Providers\RouteServiceProvider’dır. Bu service provider, uygulamanızın routes dizininde bulunan route dosyalarını yükler.
- Uygulama bootstrap edildikten ve tüm service provider’lar kaydedildikten sonra, Request yönlendirilir ve bir route veya controller’a iletilir.
5. Controller Çalıştırılması
- Eşleşen bir route bulunduktan sonra, ilgili controller metodu çalıştırılır.
- Controller, talep mantığını işler, modellerle etkileşime geçer ve response’u hazırlar.
- Controller bir response döndürür; bu, bir view, JSON veya diğer formatlar olabilir.
- Laravel, response’u bir HTTP response nesnesine dönüştürür.
7. Middleware Sonlandırılması
Request, middleware’lerden tekrar geçer, bu da son işlemlerin gerçekleştirilmesine olanak tanır (örneğin loglama, hata yönetimi).
8. Response Gönderimi
HTTP kernel’in handle metodu response nesnesini döndürür ve index.php dosyası, döndürülen response üzerinde send metodunu çağırır. Send metodu, response içeriğini kullanıcının web tarayıcısına gönderir.
Kaynak: Orijinal Makale


