Bu tabii ihtiyaçlarınıza göre değişiklik gösterebilir. Size örnek oluşturması açısından basit bir method yazayım;
app klasörü içerisine Support adlı bir klasör ekleyeyelim. Onun içine de Helper.php adında dosyamızı oluşturalım.
app/Support/Helper.php
Helper.php dosyamızın içeriği de şöyle olsun;
<?php
namespace App\Support;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class Helper
{
/**
* @param $filename
* @param $foldername
* @return string
*/
public static function imageUpload($filename, $foldername): string
{
$extension = $filename->extension();
$originalImageName = $filename->getClientOriginalName();
$imageName = explode('.'.$extension, $originalImageName);
$image_slugged = Str::slug($imageName[0]);
$isFileExist = Storage::exists($foldername.'/'.$image_slugged.'.'.$extension);
if ($isFileExist) {
$imagePath = $filename->storeAs($foldername, $image_slugged.'-'.Str::random(5).'.'.$extension);
} else {
$imagePath = $filename->storeAs($foldername, $image_slugged.'.'.$extension);
}
return $imagePath;
}
}
Ardından config/app.php dosyasına gidip 'aliases' kısmının en altına namespace'i ekleyip alias verelim:
'Helper' => App\Support\Helper::class,
Bu sayede Controller içerisinde doğrudan Use Helper; şeklinde kısa tanımlama yapabiliriz.
Örneğin herhangi bir Model için resim uploadı yapalım.
SomeController.php;
use Helper;
use Illuminate\Http\Request;
use App\Models\ExampleModel;
class SomeController extends Controller
{
public function store(Request $request){
// validation...
$model = new ExampleModel();
//diğer alanlar...
$model->image = Helper::imageUpload($request->file('image'), 'photos');
$model->save();
//return...
}
}
Burada çok temel olarak, olayı görmeniz için basitleştirdim. Bu şekilde static fonksiyonlar ekleyerek Global Helper class'ınızı kullanabilirsiniz. imageUpload fonksiyonunu kendi ihtiyaçlarınıza göre hazırlayıp, projeniz boyunca her yerden erişebilirsiniz.
Bu şekilde her seferinde tekrar tekrar resim yükleme için kod yazmanız gerekmez. Ve olası değişikliklerde tek bir noktadan kontrol edebilirsiniz.
static fonksiyonlar hazırlayarak kendi Helper'larınızı oluşturmayı, aşağıdaki makaleden örnek alarak öğrendim bende. Yine vereceğim makaleyi incelerseniz, farklı senaryolar için farklı alternatiflerde anlatılıyor:
https://blog.quickadminpanel.com/laravel-when-to-use-dependency-injection-services-and-static-methods/
Bu makalede 1. aşama olan (First Way) kısmı uygulamış olduk biz.