İçeriğe geç

Laravel Accessors ve Mutators Nedir ? Nasıl Kullanılır ?

Bu yazıda Laravel ile proge egliştirirken benim sıkça kullandığım güzel 2 özellikten bahsedeceğim. 

Accessors

Model ile veritabanından bir veriye ulaştıktan sonra o veriyi göstermeden önce ona müdahale etmenize imkan sağlıyor. Diyelim ki şehir adı sakladığınız bir tabloda verileriniz hep küçük harfle yazılmış durumda. Siz bu şehirleri gösterirken baş harfi büyük olacak şekilde imla kurallarına uygun bir halde göstermek istiyorsunuz. Bu durumda muhtemelen veriyi yazdırdığınız yerde ucfirst($text) fonksiyonunu kullanıyorsunuz. Bu şekilde kullandığınız zaman şehir adını yazdırmanız gereken her yerde aynı kod kalıbını kullanmanız gerekiyor. Oysa veriyi yazdırmadan önce şehir isimleri bir kontrolden geçerek baş harfi büyütülmüş şekilde gelseydi o kod kalıbını her yere taşımak zorunda kalmazdınız. Bir noktada iş halledilir ve size sadece yazdırmak kalırdı. İşte bu durumu çözebilmek için Accessors özelliğini kullanıyoruz. Veriler veritabanından çekildikten hemen sonra biz daha yazdırmadan accessor fonksiyon tarafından işlenebiliyor. 

Bu örnekte City modeline getNameAttribute adında bir fonksiyon yazdık. Bu fonksiyonun diğerlerinden farkı başında get sonunda ise Attribute yazıyor olması. Ortada geçen isim ise tablodaki sütunun adıdır. camelCase olarak fonksiyon adını yazdıktan sonra bir daha bizim bir kontrol yapmamıza gerek kalmıyor. Artık aşağıdaki gibi doğrudan veriye ulaşıp üzerinde bir işlem yapmadan yazdırabiliriz.

Accessors ile çalışmak sadece projenin içinde değil dışında da bize kolaylıklar sağlıyor. Eğer projenin ihtiyaçları gereği API yazdıysanız onu kullanacak olan kişiler de kontrol yapmaya gerek kalmadan veriyi biçimlendirmiş şekilde görebilir. Tabi API isteklerini model ile cevaplandırdığınızı varsayıyorum 🙂

 

Mutators

Mutator ise veriyi okurken değil yazarken kullanılır. Örneğin projenizin herhangi bir amaca hizmet eden veri giriş formu var. Bu formdan ad, soyad, doğum tarihi, e-posta vb. bilgiler giriliyor. Bu girilen bilgilerin kayıt aşamasında imla hatalarının ve format hatalarının çözülmesi gerekiyor. Bu durumda formun kayıt edildiği kısımda çeşitli kontroller yapmanız gerekiyor. Kullanıcı giriş yaparken isminin tamamını küçük harfle girmiş olabilir, doğum tarihini çizgi kullanarak girmiş olabilir -oysa siz nokta ile girmesini istiyorsunuzdur-, e-posta adresini tamamen büyük harflerle girmiştir veya boy girerken araya virgül koymuştur. Mutator bunlar gibi giriş sırasındaki sorunları tek merkezden çözmemize olanak sağlıyor. Aynı model ile birden fazla noktada veri girişi yaptırıyorsanız veya projenin dışında içine veri alan bir API yazdıysanız tüm noktalarda tek tek kontrol yapıp kaydetmek yerine model içine mutator yazmanız en kolay ve güzel çözüm olacaktır.

Accessor isimlendirme standardı gibi bunda da fonksiyonun isminin sonunda Attribute eklenir. Fonksiyonun başına ise get yerine set eklenerek camelCase şeklinde yazılır.

Modele gerekli kodları yazdıktan sonra artık kontrol yapmaya gerek kalmadan doğrudan gelen veriyi kaydedebiliriz. Model kayır sırasında gerekli düzenlemeyi yapıp veritabanına istediğiniz şekilde kaydedecektir.

 

Date Mutators

Son olarak date mutators konusuna değinelim. 

Model içinde $dates değişkenine yazdığınız alanlar otomatik olarak $dateFormat değişkenine yazdığınız şekilde biçimlendirilir. Yukarıda anlattığım konudan hiçbir farkı yoktur. Sadece tarihler için ek bir mutator yazmanıza gerek kalmadan hepsini bir arada biçimlendirmeniz için tek noktada toplanmıştır. 

 

Son olarak;

Accessor ve mutator kullanarak projeye ileriki bir zamanda müdahale etmeniz gerektiğinde tüm kodları tek tek okuyup düzeltmek yerine sadece model dosyalarında değişiklik yaparak kolayca iş yükünden kurtulmuş olursunuz. 

Tarih:LaravelPHP

Tek Yorum

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

two + one =