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