Macrolar, sonradan bir sınıfa dinamik olarak yeni bir yöntem eklemeyi sağlar. Bu ne demek oluyor, onu açıklamaya çalışacağım.
Şimdi Laravelde varsayılan olarak bir sürü özellik ile gelir ve neredeyse bütün paketlerinde Macroable traiti var. Bu trait, bize dinamik yöntemler eklememizi sağlar.
Örneğin, biz Http paketini kullanmak istiyoruz ve her seferinde:
- token girme
- headerleri ayarlama
- base url ayarlama
gibi adımlardan geçmek zorunda kalıyoruz.
Örnek:
use Illuminate\Support\Facades\Http;
Http::withToken('token')
->withHeaders([
'Accept' => 'application/json',
])
->get('example.com');
Bu kullanım şekli oldukça yorucu olacaktır ve her yazıldığında bi tık zor olacak.
Birde macro tanımlamaya gelelim.
Tanımlamak için:
app/Providers/AppServiceProvider.php dosyasının, register yöntemi içine ekleyiniz.
use Illuminate\Support\Facades\Http;
Http::macro('example', function(){
return Http::withToken('token')
->withHeaders([
'Accept' => 'application/json',
])
->baseUri('https://example.com/api')
});
Kullanım:
Http::example()->get('posts')
Şeklinde..
Bu şekilde, bizi çoğu şeyi tekrar etmekten kurtarmış oldu.
İyi forumlar..