Laravel Nedir?Laravel web geliştirme dillerinden olan php ile ortaya çıkmış bir freamworktur. Spagetti php'ini yanında bizlere daha esnek bir kod yapısı ve ekip çalışmasına uygun bir yapı sağlamaktadır. Bu makalemizde sizlere laravelde nasıl daha okunabilir performans odaklı kod yazılır. Ekip çalışmalarınızda arkadaşlarınızın daha rahat okuyabileceği bir yapıyı nasıl dizayn edebilirsiniz gibi konuları ele alacağız.Laravel bizlere uzun ve karmaşık sorgulardan yada iç içe her sayfada herşeyi yazmaktan yanı sıra daha sade anlaşılır ve basit bir mvc yapısı sunar. Mvc(Model-Controller-View) yapısı kodlarımızı düzenli hale getirip Model ile sorgularımızı Controller ile alacağımız aksiyonları temiz bir kod yapısına çekerek daha temiz bir View görüntüsü sağlamaktadır.Daha temiz bir kod yazmak için
1-İsimlendirme kurallarına dikkat edin Fonksiyon isimlerini her defasında farklı isimlendirme yapısı kullanmak yerine sabit bir yapı kullanınYanlış Kullanım:
public function getOrderStatus(){ //islemler}
public function get_order_price(){ //islemler}
Doğru Kullanım:
public function getOrderStatus(){ //islemler}
public function getOrderPrice(){ //islemler}
2-Efektif ORM kullanımı
Laravel'in en iyi özelliklerinden biri olan ORM yapısını daha efektif okunabilir bir şekilde kullanın$orders = DB::table("orders")->where("status",1)->get()
Bunun yerine$orders = Orders::where("status",1)->get();
Model sınıflarını kullanarak kodunuzu daha okunabilir bir hale getirebilirsiniz. 3-Laravelde İlişkileri(Relationships) kullanmak
Laravel bizim spagetti php den bu yana kullandığımız inner join mantığına ORM ile yeni bir yaklaşım getirmiştir. Model sınıfınızda tanımladığınız hasOne() hasMany() belogsTo() gibi tablo ilişkilerini uzun uzadıya inner join yazmak yerine kodunuzda daha efektif bir şekilde kullanabilirsiniz$orders = DB::table('orders')
->join('users', 'users.id', '=', 'orders.user_id')
->select('orders.*', 'users.name as user_name')
->get();
Bunun yerinclass Order extends Model {
public function user() {
return $this->belongsTo(User::class);
}
}
//Get order user
$orders= Order::with('user')->get();
Bu şekilde kullanarak daha temiz bir join yapısına geçebilirsiniz.4-Kod tekrarından uzaklaşın
Controllerda birden fazla aynı kodu yazmak yerine bu kodu public bir fonksiyona dönüştürerek her yerde kullanabilirsinizpublic function edit($id){
$user = User::where("id",$id)->first();
return view("edit",compact('user'))
}
public function show($id){
$user = User::where("id",$id)->first();
return view("show",compact('user'))
}
Bunun yerinepublic function findUser($id){
$user = User::where("id",$id)->first();
return $user;
}
public function show($id){
$user =$this->findUser($id);
return view("show",compact('user'))
}
public function edit($id){
$user =$this->findUser($id);
return view("edit",compact('user'))
}
Tekrar eden işlemleri fonksiyonlaştırıp kendimizi tekrar etmekten kaçınalım.Diğer Tavsiyeler
-Laravel Database işlemleri olan migration ve seeder'ları aktif olarak kullanın bu işlemleri aktif olarak kullanmak size öncelikle ekip çalışmasında büyük faydalar sağlayacak olup herhangi bir database çökmesi kaybolması yada veri kaybı gibi durumlarda yardımcı olacaktır.
-Ara yazılım(Middelware) kullanmaktan çekinmeyin. Middleware kullanımı kullanıcıların auth işleminde başlayarak kullanıcıyı aktif pasif etme rol yönetimi gibi konularda routelar ile beraber kullanımında size kolaylık sağlayacaktır.
-Composer paketinizi güncel tutun. Laravel her geçen gün gelişen bir freamwork yapısına sahiptir bu yüzden minimum 3 ayda bir bağımlılıklarınızı kontrol ederek gerekli güncellemeleri içeri alın
-Kuyruk(Queue) ve Job(İş Emirleri) kullanın. Büyük ölçekli veri gönderimi Rest Api kullanımı yada mail gönderimi gibi durumlarda laravelin kuyruk sisteminden faydalanabilirsiniz. Kuyruk sistemi tüm yükü tek seferde ele almak yerine sıraya sokup teker teker işlem yaparak sunucunuzu yormaz veri kaybını büyük ölçüde önler.