Konu Başlıkları
Yükleniyor...

Laravel: Neyi Çözer, Nerede Dikkat Etmek Gerekir

Laravel ile Web Geliştirme: Eloquent, Blade, Artisan ve Ekosistem

Laravel, PHP tarafında bir web uygulamasının tekrar eden işlerini hazır getiren bir çerçeve: yönlendirme, kimlik doğrulama, veritabanı katmanı, kuyruk, zamanlanmış görev. 2011'de Taylor Otwell yazdı, bugün PHP dünyasının fiili standardı sayılıyor. Aşağıda hangi parçasının günlük işi gerçekten taşıdığını, hangi iddiasının abartıldığını ve nereye dikkat etmek gerektiğini anlatıyorum.

Laravel aslında neyi çözüyor

Boş bir PHP projesinde oturum yönetimi, form doğrulama, parola sıfırlama, e-posta gönderimi ve arka plan işleri yazmak günler alır. Laravel bunların hepsini kutudan çıkarır. Kazanç, "zarif sözdizimi"nden çok bu: her projede sıfırdan kurmadığınız altyapı.

Ölçeklenebilirlik iddiasına biraz mesafeli yaklaşmakta fayda var. Laravel uygulamaları yatay ölçeklenir, doğru, ama bu büyük ölçüde PHP'nin istek başına temiz başlayan yapısından gelir, çerçeveden değil. Trafik büyüdüğünde ilk tıkanan yer neredeyse her zaman veritabanıdır. Önbellek için Redis desteği hazır gelir, ancak neyi önbelleğe alacağınıza yine siz karar verirsiniz.

Günlük işi taşıyan parçalar

Eloquent

Veritabanı tablolarını PHP sınıflarıyla eşler. User::find(3)->posts yazarsınız, SQL yazmazsınız. İlişkileri kurmak, ilişkili kaydı çekmek, filtre zincirlemek çok kısa sürer.

Blade

Şablon motoru. Derlenmiş PHP'ye çevrildiği için hızlıdır ve {{ }} ile bastırdığınız her şey otomatik olarak HTML kaçışından geçer. XSS korumasının büyük kısmı buradan gelir, ayrı bir çaba istemez.

Artisan

Komut satırı arayüzü. Model, migration, controller üretir; önbellek temizler; kendi komutlarınızı yazmanıza izin verir. Zamanlanmış görevler de buraya bağlanır: sunucuya tek bir cron satırı koyarsınız, geri kalan zamanlamayı kod içinde tanımlarsınız. Yedekleme, rapor e-postası, eski kayıt temizliği gibi işler için crontab'ı kalabalıklaştırmaya gerek kalmaz.

Kuyruklar

Yavaş işi istekten ayırır. PDF üretimi, toplu e-posta, harici API çağrısı gibi işleri kuyruğa atıp kullanıcıyı bekletmezsiniz. Küçük projelerde database sürücüsü yeterli, ciddi hacimde Redis'e geçin.

Eloquent'in faturası: N+1

ORM'in kolaylığı bir maliyetle gelir ve bu maliyet çoğu Laravel yazısında atlanır. Bir liste sayfasında 50 yazı çekip her birinin yazar adını döngü içinde okursanız, önce yazıları getiren 1 sorgu, sonra her yazının yazarı için 50 sorgu daha çalışır. Toplam 51. Kodda hiçbir şey yanlış görünmez, sayfa yerelde 20 kayıtla sorunsuz açılır, canlıda 500 kayıtla çöker.

Çözüm tek satır:

// 51 sorgu $yazilar = Yazi::latest()->take(50)->get(); // 2 sorgu $yazilar = Yazi::with('yazar')->latest()->take(50)->get();

Genel kural: ilişkiye Blade şablonu içinde erişiyorsanız, o ilişkiyi sorguda with() ile önden yükleyin. Yeni bir projede ilk iş olarak Model::preventLazyLoading() satırını geliştirme ortamında açın; önden yüklenmemiş her ilişki erişimi istisna fırlatır ve sorunu canlıya çıkmadan önce görürsünüz.

Tam yığın mı, API mi

Laravel'i iki şekilde kullanabilirsiniz. Birincisi tam yığın: yönlendirme Laravel'de, arayüz Blade'de. İkincisi API arkası: React ya da Next.js önyüzü ayrı çalışır, Laravel yalnızca JSON döner ve kimlik doğrulamayı Sanctum ile yapar.

Seçim, arayüzün gerçekten ne kadar durum tuttuğuna bakar. Formlar, listeler ve yönetim panellerinden oluşan bir uygulamada Blade'de kalın; araya ayrı bir önyüz projesi sokmak size iki dağıtım hattı, iki bağımlılık ağacı ve tarayıcıda yeniden kurulacak bir yetkilendirme mantığı getirir. Canlı grafik, karmaşık sürükle-bırak veya mobil uygulamayla paylaşılan bir arka uç varsa API tarafı doğru tercihtir. Arada kalıyorsanız Livewire ya da Inertia, ayrı önyüz projesi açmadan aynı etkinin çoğunu verir.

Ekosistemde neyin parası ödenir

Laravel'in resmi ürünlerini karıştırmamakta fayda var. Scout, Octane, Reverb, Cashier, Sanctum, Sail ve Pulse ücretsiz paketlerdir, composer ile kurulur. Forge, Nova, Vapor ve Laravel Cloud ise abonelikli hizmetlerdir.

Forge, VPS üzerinde sunucu kurulumu ve dağıtımı yapar ve aylık ücretini çoğu ekipte fazlasıyla çıkarır. Nova için aynısını söyleyemem: ücretsiz Filament, yönetim paneli ihtiyacının büyük kısmını karşılıyor, Nova'yı satın almadan önce onu denemekte yarar var. Sail'i ise yerelde kullanmıyorum (Docker katmanının getirdiği yavaşlığı çoğu proje için gereksiz buluyorum); Herd ya da doğrudan kurulmuş bir PHP ile geliştirme döngüsü belirgin biçimde hızlı.

Kurulum

Sürüm gereksinimini doğru bilin: dolaşımdaki pek çok yazı hâlâ PHP 8.1 yazıyor, oysa Laravel 11 ve 12 en az PHP 8.2 ister. Yanında Composer gerekir, arayüz varlıklarını derleyecekseniz Node.js de.

# Laravel installer'ı global olarak yükleyin composer global require laravel/installer # Yeni bir proje oluşturun laravel new ornek-proje cd ornek-proje # Bağımlılıkları yükleyin ve varlıkları derleyin npm install && npm run build # Geliştirme sunucusunu başlatın php artisan serve

Tarayıcıda http://localhost:8000 adresi açılıyorsa kurulum tamam. Sonraki adım olarak .env içindeki veritabanı ayarlarını yapıp php artisan migrate çalıştırın; ilk gerçek hatalarla genelde orada karşılaşırsınız.