Laravel Service Injection
Merhaba arkadaşlar,
Laravel’de geliştirdiğim projede view’da geliştirdiğim bir kütüphanenin metoduna belirli parametreler göndererek işlem yapmam gerekiyordu. Phalcon’a aşina olanlar Service Injection’u bilirler 🙂 Bunu Laravel’de şu şekilde yapabiliyorsunuz;
// user/partials/avatar.blade.php
@inject('image', 'App\Services\BuildImage')
<h3>Image</h3>
<div class="avatar-display">
{{ $image->getImage('avatar', 'medium', 'aws') }}
</div>
Evet gördüğünüz gibi app/Services altında oluşturduğunuz BuildImage içerisinde tanımladığınız getImage($var1, $var2, $var3 ..) metoduna 3 adet parametre gönderdik.
Diğer view dosyalarında da bunu kullanmak istiyorsanız her seferinde aynı classı her view’da tek tek @inject ettiğinizde kendinizi tekrar etmiş olursunuz! DRY! WTF!
Aşağıda yolunu verdiğim dosyayı bu şekilde düzenleyin;
// app/Providers/AppServiceProvider.php
public function boot()
{
view()->composer('*', function($view){
$view->with('image', new BuildImage);
});
}
İşte bu kadar artık getImage metoduna view katmanında @inject etmeye gerek kalmadan kullanabilirsiniz.
Kaynaklar:
1 – https://laravel.com/docs/5.2/views#view-composers
2 – https://docs.phalconphp.com/en/latest/reference/di.html