Ve diğer %60, gerçek mucizenin yaşandığı yerdir.
2015, karmaşık bir PHP projesinin içindeydim.
Aynı veritabanı sorgusu beş farklı dosyada. Ne kadar düzeltirsem düzelteyim, geri dönen hatalar. Her küçük değişiklik, yanlış bir şeye dokunuyormuşum hissini veriyordu. Yorulmuştum.
Bir arkadaşım, herhangi bir açıklama yapmadan bana bir link gönderdi. Sadece — “bunu dene.”
O, Laravel’di.
Tüm hafta sonumu belgeleri okumakla geçirdim. Temiz rotalar. Gerçekten mantıklı olan Eloquent. Migrations. Tam olarak buna bağlı kalmıştım.
Sonraki yıl, aynı şeyleri tekrar tekrar kullandım — rotalar, controller’lar, modeller, Blade şablonları. Bunu Laravel sanmıştım. Her şeyi çözdüğümü düşündüm.
Düşünmemişim.
İşte kimsenin sana söylemediği şey
İşte kimsenin sana söylemediği şey
Laravel’in sunduğu şeylerin sadece %40’ını kullanarak çalışır uygulamalar geliştirebilirsin. Ve bu şeyler düzgün çalıştığı için, çoğu geliştirici geri kalanını aramaya ihtiyacı duymaz.
Anlıyorum. Son tarihler var. Controller çalışıyor. Sorgu başarıyla yürütülüyor. Gönder gitsin, devam et.
Ama altı ay sonra aynı dosyayı açtığında, bunu kim yazdı diye düşüneceksin. Controller 300 satır. Aynı mantık dört yerde kopyalanmış. Basit bir hata düzeltmesi, aslında iki alakasız şeyi bozmuş durumda.
Bu şanssızlık değil. Sadece temel şeyleri kullanmanın sonucudur.
Laravel zaten çözümleri sunmuş. Onların var olduğunu bilmek lazım. İki tanesini göstereyim — ve altı tane daha sunayım.
Bir müşterinin sunucuyu yükselttiğimizi sanmasına neden olan şey
Bir müşterinin sunucuyu yükselttiğimizi sanmasına neden olan şey
Belli bir projeyi devraldım; kontrol panelinin yüklenmesi neredeyse 2 saniye alıyordu. Müşteri şikayet ediyordu. Kodu açtım, karmaşık bir şey bekliyordum.
Her sayfa yüklemesinde 11 veritabanı sorgusu vardı. Sadece yan menü ve kullanıcı izinleri için. Haftalarca değişmeyen veriler – her biri kontrol panelini açan herkes için taze olarak alınıyordu.
Laravel’in yerleşik cache özelliğinden üç satır ekledim:
$menuItems = Cache::remember("nav.user.{$user->id}", now()->addHours(6), function () use ($user) {
return NavigationService::buildFor($user);
});
Sayfa yüklenme süresi 1.8 saniyeden 200 milisaniyeden daha az bir süreye düştü.
Gerçekten de müşteri, sunucuyu yükselttik mi diye sordu. Biz sunucuyu yükseltmemiştik.
Cache::remember, ilk seferde sonucu saklayarak başlar, sonra süresi dolana kadar saklanan versiyonu döndürür. Bu kadar basit. Navigasyon menüleri, izinler, ayarlar, istatistikler — yavaş yüklenen ama nadiren değişen her şey için mükemmel bir çözümdür.
Beni 300 satırlık controller yazmaktan durduran şey
Beni 300 satırlık controller yazmaktan durduran şey
Her Laravel geliştiricisi bir noktada bunu yapmıştır.
Kullanıcı kaydoldu → onlara hoş geldin e-postası göndermeniz gerekiyor, çalışma alanlarını oluşturmanız, Slack’te admin’i bilgilendirmeniz, varsayılan rolü atamanız gerekiyor. Tüm bunları en hızlı şekilde yapmak için aynı controller metodunun içine yazıyorsunuz.
Üç ay sonra o metod 80 satır olmuş ve tamamen farklı altı şeyi kapsıyor. Kimse ona yaklaşmak istemiyor.
Laravel’in Observers adında bir şeyi var. Bir Observer, bir modelin üzerine gelen her şeyi otomatik olarak izler ve kod çalıştırır — oluşturulduğunda, güncellendiğinde, silindiğinde. Controller sadece işini görür. Diğer her şey kendi başına devreye girer.
class UserObserver
{
public function created(User $user): void
{
Mail::to($user)->send(new WelcomeEmail($user));
Workspace::createDefault($user);
Slack::notify("Yeni kullanıcı: {$user->email}");
}
}
Controller kullanıcıyı oluşturur. Observer geri kalanını halleder. Temiz, otomatik, daha sonra bulması kolay.
Açıkçası, Observer’ları kullanmaya başladıktan sonra “birisi kaydolduğunda bir şey daha yapabilir miyiz?” muhabbetlerinden korkmamaya başladım. Yeni bir eylem eklemek tek bir dosyadaki bir metot. Beş dakika, tamam.
Altı tane daha — tam kod ve gerçek hikayelerle
Altı tane daha — tam kod ve gerçek hikayelerle
Bu ikisi sadece başlangıç. Blogumda, bu gizli Laravel özelliklerinden sekizini tam olarak yazdım — gerçek kod ile, onları keşfettiğim gerçek durumlarla (genellikle yanlış yaparak) birlikte.
Diğer altısı şunları kapsıyor:
- Collections — iç içe foreach döngüleri yazmak yerine temiz işlemler zincirleyin
- Pipelines — koşulları iç içe yerleştirmeden çok adımlı mantığı yönetin
- API Resources — yeniden adlandırılmış bir veritabanı sütununun mobil uygulamalarınızı bozmasını engelleyin
- Jobs & Queues — yavaş formların anında yanıt almasını sağlamak için işlemleri arka plana atın
- Macros — tekrar etmeyi durdurmak için Laravel’in çekirdek sınıflarınıza kendi yöntemlerinizi ekleyin
- Lazy Collections — bellek yetersizliği yaşamadan yüz binlerce kaydı işleyin
Tüm bunlar zaten Laravel’in içinde var. Hiçbir paket yok. Kurulum yok. Sadece çoğu geliştiricinin gözden geçirdiği şeyler.
👉 Tüm ayrıntıları oku → codewithjayesh.com
Tüm sekizini bu hafta sonu öğrenmek zorunda değilsin. Şu anda karşılaştığın bir sorunla eşleşen bir tanesini seç ve oradan başla.
Tanıdığım en iyi Laravel geliştiricileri, en hızlı öğrenenler değil. Her gün kullandıkları araç hakkında asla merak duygusunu kaybetmeyenlerdir.
Daha fazlası için takip et — gerçek Laravel bilgileri, abartı yok.
Kaynak: Orijinal Makale


