Mahmut Bayrı

Laravel: Servis Sağlayıcılar

Giriş

Servis sağlayıcılar (Service Providers) Laravel uygulamasının başlatılmasının merkezidir. Sizin uygulamanız ve hem de tüm Laravel’in çekirdeği servis sağlayıcılar tarafından başlatılır.

Fakat, “başlatma” derken neyi kasdediyoruz. Genelde kasdettiğimiz şeyler; taşıyıcıya bağlama, olay dinleyiciler, hatta yönlendiricilerdir. Servis sağlayıcılar uygulamanızı yapılandırmalarınızn merkezidir.

Laravel’le gelen config/app.php dosyasını açarsanız providers isimli bir dizi göreceksiniz. Uygulamanız için yüklenecek servis sağlayıcıların hepsi burada yer alır. tabiki, bunlardan çoğu sonradan yüklemeli sağlayıcılardır, yani her istekte yüklenmezler ancak ihtiyaç duyulduğunda yüklenirler.

Bu genel bakıştan sonra Laravel uygulamasına kendi servis sağlayıcılarınızı yazmayı ve kaydetmeyi öğreneceksiniz.

Servis Sağlayıcıları Yazmak

Tüm servis sağlayıcıları Illuminate\Support\ServiceProvider sınıfından genişletilir. Bu sanal sınıf servis sağlayıcınızda en az bir metod tanımlamanızı gerektirir: register. register metodu yalnızca servis taşıyıcısına bağlantılar için kullanın. Hiç bir zaman herhangi bir olay dinleyici, yönlendirici veya herhangi bir işlem kaydetmeyi denemeyin.

Artisan CLI make:provider komuturla kolayca yeni bir sağlayıcı oluşturabilir.

Kayıt Metodu

Daha önceden değinildiği gibi register metodu içinde yalnızca servis taşıcısına bağlantıyı yapın. Hiç bir zaman Herhangi bir olay dinleyici, yönlendirici veya herhangi bir işlem kaydetmeyi denemeyin. Diğer türlü yanlışlıkla servis sağlayıcı tarafından henüz yüklenmemiş bir servisi kullanabilirsiniz.

Şimdi, temel bir servis sağlayıcıya göz atalım:

Bu servis sağlayıcısında yalnızca register metodu tanımlı.

Hazırlama (Boot) Metodu

Servis sağlayıcımızda bir görünüm kopozitörünü kaydetmek için neye ihtiyacımız var? boot metoduyla bu yapılabilir. Bu metod kaydedilen tüm diğer servis sağlayıcılar kaydedildikten sonra çağrılır, bunun anlamı framework tarafından kaydedilen diğer tüm servislere erişiminiz olduğudur:

Servis Sağlayıcının Kaydı

Tüm servis sağlayıcılar config/app.php yapılandırma dosyasında kaydedilir. Bu dosya servis sağlayıclarınızının isimlerini listeleyebileceğiniz providers dizisi içerir. Varsayılan olarak Laravel’in temel vervis sağlayıcıları bu dizidedir. Bu servis sağlayıcıları mail, kuyruk (queue), ön bellek (cache) gibi temel laravel bileşenlerini hazırlar.

Servis sağlayıcınızı kaydetmek için bu diziye ekleme yapın:

Gecikmeli Yüklenen (Deffered) Sağlayıcılar

Sağlayıcınız sadece servis taşıyıcısına kaydetmek içinse, ihtiyaç duyulduğunda yüklenen gecikmeli yüklemeyi kullanabilirsiniz. Gecikmeli yükleme, her istekte dosya sisteminden yüklelenmeyeceği için uygulamanızın performansını arttır.

Bir sağlayıcının gecikmeli yüklemenmesi için defer parametresini true ayarlayın ve provides isimli bir metod tanımlayın. provides metodu kaydedilen sağlayıcının servis taşıyıcı bağlantısını döner.

Laravel gecikmeli yüklenen sağlayıcılar tarafından yüklenen tüm servislerin listesini saklar ve derler. Daha sonra bu servislerin çözümlenmesini denediğinizde Laravel servis sağlayıcıyı yükler.