Blog

Laravel

Laravel ile web uygulamaları geliştirmek: yönlendirme, Eloquent modelleri, kimlik doğrulama, kuyruklar ve yayına alma, gerçek projelerde kullanabileceğiniz pratik örneklerle anlatılıyor.

Burada henüz hikâye yok!

Bu konuda henüz yazmadık. Başka bir konuya göz atın ya da yakında tekrar uğrayın!

Bu konuyla ilgili sorular

Okurların bu konu hakkında en çok sorduklarına kısa ve net yanıtlar.

Laravel nedir?

Laravel, web uygulamaları geliştirmek için kullanılan ücretsiz ve açık kaynaklı bir PHP framework'üdür. Laravel geliştiricilere yönlendirme, veritabanları, giriş, e-posta, kuyruklar ve test için hazır parçalar sunar, böylece daha az tekrarlayan kod yazılır. Framework model, view, controller kalıbını izler ve geniş bir topluluğa sahiptir.

Laravel ne için kullanılır?

Laravel; yönetim sistemleri, müşteri portalları, online mağazalar, rezervasyon platformları ve mobil uygulamalar için API'ler gibi web uygulamaları geliştirmek için kullanılır. Kullanıcılara, veritabanına ve iş kurallarına ihtiyaç duyan her projeye uyar. Framework kararlı ve kolay genişletilebilir olduğu için birçok şirket büyük özel sistemlerini Laravel üzerinde çalıştırır.

Laravel yeni başlayanlar için uygun mu?

Laravel, temel PHP bilen yeni başlayanlar için uygundur, çünkü kodu okunaklı ve resmi belgeleri anlaşılırdır. Laravel'in ayrıca geniş bir topluluğu, çok sayıda eğitimi ve giriş sayfalarını sizin için kuran başlangıç kitleri vardır. Önce düz PHP öğrenmek framework'ü anlamayı çok kolaylaştırır.

Laravel bilgisayarıma nasıl kurulur?

Laravel'i kurmak için önce PHP ve Composer'ı kurar, ardından composer create-project laravel/laravel komutunu proje adınızla birlikte çalıştırırsınız. laravel new ile çağrılan Laravel yükleyicisi de aynı işi yapar ve başlangıç kitleri sunar. Sonrasında php artisan serve yerel bir sunucu başlatır ve uygulamayı tarayıcınızda açabilirsiniz.

Laravel hangi PHP sürümüne ihtiyaç duyar?

Laravel güncel bir PHP 8 sürümüne ihtiyaç duyar ve her Laravel sürümü desteklediği en düşük PHP sürümünü belirtir. Yeni Laravel sürümleri, eski PHP sürümlerinin güvenlik desteği sona erdikçe onlara verdiği desteği bırakır. Kullanmayı planladığınız Laravel sürümünün yükseltme rehberini her zaman kontrol edin.

Laravel'de routing (yönlendirme) nedir?

Laravel'de routing, bir web adresini ve GET ya da POST gibi bir HTTP yöntemini ona yanıt veren koda bağlar. Rotalar sayfalar için routes/web.php, API'ler için routes/api.php gibi dosyalara yazılır. Bir rota bir closure'ı ya da bir controller metodunu çağırabilir ve giriş ile diğer kontroller için middleware taşıyabilir.

Laravel'de Eloquent nedir?

Eloquent, Laravel'in ORM'idir; veritabanı tablolarıyla model adı verilen PHP sınıfları üzerinden çalışmanızı sağlayan parçadır. Her model bir tabloya, her nesne de bir satıra karşılık gelir, böylece SQL yazmadan veri okuyup kaydedebilirsiniz. Eloquent ayrıca bire çok ve çoka çok gibi ilişkileri de yönetir.

Laravel'de Eloquent ilişkileri nasıl çalışır?

Laravel'de Eloquent ilişkileri, iki tablonun nasıl bağlandığını tanımlayan hasMany, belongsTo ve belongsToMany gibi model metotlarıdır. Tanımlandıktan sonra ilgili veriyi join yazmadan $order->customer şeklinde okuyabilirsiniz. with metoduyla eager loading, ilgili satırları tek seferde yükler ve yavaş tekrarlanan sorguları önler.

Laravel'de N+1 sorgu problemi nedir?

Laravel'de N+1 sorgu problemi, kod bir kayıt listesini yükleyip ardından ilgili veriyi almak için her kayıt adına ek bir sorgu çalıştırdığında ortaya çıkar. 100 siparişlik bir sayfa 101 sorgu çalıştırıp yavaşlayabilir. with metoduyla eager loading, ilgili satırları tek bir sorguda getirerek sorunu çözer.

Laravel'de migration nedir?

Laravel'de migration'lar, veritabanı tablolarını kod içinde oluşturan ve değiştiren PHP dosyalarıdır. php artisan migrate komutu bunları uygular, böylece her geliştirici ve her sunucu aynı veritabanı yapısına sahip olur. Migration'lar sürüm kontrolünde durduğu için her tablo değişikliğinin geçmişi saklanır.

Laravel'de Blade nedir?

Blade, döngüler, koşullar ve düzenler için basit etiketlerle HTML sayfaları yazmaya yarayan Laravel'in şablon motorudur. Blade ekrana yazdırılan değerleri varsayılan olarak kaçışlar, bu da sayfaları siteler arası betik çalıştırmaya karşı korur. Şablonlar düz PHP'ye derlenip önbelleğe alındığı için Blade her isteğe neredeyse hiç maliyet eklemez.

Laravel'de kimlik doğrulama nasıl çalışır?

Laravel'de kimlik doğrulama, kullanıcının kim olduğunu kontrol eden guard'lar ve kullanıcıları veritabanından yükleyen provider'lar üzerinden çalışır. Laravel Breeze gibi başlangıç kitleri hazır giriş, kayıt ve şifre sıfırlama sayfaları ekler. Şifreler bcrypt veya Argon2 ile hash'lenir, böylece asla düz metin olarak saklanmaz.

Laravel Sanctum ile Laravel Passport arasındaki fark nedir?

Laravel Sanctum tek sayfa uygulamaları, mobil uygulamalar ve basit API'ler için sade token ve çerez tabanlı giriş sağlarken, Laravel Passport tam bir OAuth2 sunucusudur. Daha hafif ve kurulumu daha kolay olduğu için çoğu proje yalnızca Sanctum'a ihtiyaç duyar. Passport ise dış uygulamaların kullanıcılarınız adına giriş yapması gereken durumlara uyar.

Laravel'de middleware nedir?

Laravel'de middleware'ler, bir isteği kodunuza ulaşmadan önce ya da bir yanıtı çıkmadan önce kontrol eden veya değiştiren katmanlardır. Yaygın middleware'ler giriş kontrollerini, CSRF korumasını, istek sınırlamayı ve dil ayarlarını yönetir. Middleware'leri tek tek rotalara, rota gruplarına ya da tüm uygulamaya bağlayabilirsiniz.

Laravel'de kuyruklar nasıl çalışır?

Laravel'de kuyruklar, e-posta göndermek ya da rapor oluşturmak gibi yavaş görevleri web isteğinin dışına, arka plan işlerine taşır. Bir iş Redis ya da veritabanı gibi bir kuyruk sürücüsüne gönderilir ve php artisan queue:work ile başlatılan bir worker onu çalıştırır. Ağır iş arka planda tamamlanırken kullanıcı hızlı bir yanıt alır.

Bir Laravel uygulamasında kuyrukları ne zaman kullanmalıyım?

Bir Laravel uygulamasında, bir görev bir andan uzun sürdüğünde ya da e-posta, dosya işleme veya ödeme webhook'ları gibi bir dış servisle konuştuğunda kuyrukları kullanmalısınız. Kuyruklar sayfaları hızlı tutar ve başarısız işlerin kendi kendine yeniden denenmesini sağlar. Laravel Horizon, Redis kuyruklarını izlemek için bir panel sunar.

Laravel'de görevleri nasıl zamanlarım?

Laravel'de görevleri, daily ya da everyFiveMinutes gibi metotlarla zamanlayıcı içinde tanımlayıp sunucudaki tek bir cron satırından her dakika php artisan schedule:run çalıştırarak zamanlarsınız. Zamanlayıcı da hangi görevlerin vaktinin geldiğine karar verir. Bu, tüm zamanlanmış işleri birçok ayrı cron satırı yerine kod içinde tutar.

Laravel'de form verilerini nasıl doğrularım?

Laravel'de form verilerini, request üzerindeki validate metoduyla ya da kuralları tutan bir Form Request sınıfıyla doğrularsınız. required, email, max ve unique gibi kurallar her alanı kodunuz kullanmadan önce kontrol eder. Doğrulama başarısız olduğunda Laravel kullanıcıyı hata mesajları ve eski girdiyle birlikte geri gönderir.

Laravel yaygın web saldırılarına karşı nasıl koruma sağlar?

Laravel yaygın web saldırılarına karşı formlardaki CSRF token'ları, Blade'de kaçışlanmış çıktı, veritabanı sorgularında parametre bağlama ve hash'lenmiş şifrelerle koruma sağlar. Bu varsayılanlar normal kullanımda siteler arası istek sahteciliğini, siteler arası betik çalıştırmayı ve SQL enjeksiyonunu engeller. Geliştiricilerin yine de girdiyi doğrulaması, yetkileri kontrol etmesi ve framework'ü güncel tutması gerekir.

Bir Laravel uygulamasını sunucuya nasıl yayınlarım?

Bir Laravel uygulamasını, kodu sunucuya çekip geliştirme paketleri olmadan composer install çalıştırarak, .env dosyasını ayarlayarak ve migration'ları çalıştırarak yayınlarsınız. Ardından config, rota ve view'ları önbelleğe alır ve web sunucusunu public klasörüne yönlendirirsiniz. Birçok ekip, her sürümün aynı olması için bu adımları Git üzerinden otomatikleştirir.

Bir Laravel uygulaması hangi sunucuya ihtiyaç duyar?

Bir Laravel uygulaması PHP, Nginx veya Apache gibi bir web sunucusu, MySQL veya PostgreSQL gibi bir veritabanı ve Composer bulunan bir sunucuya ihtiyaç duyar. Önbellek ve kuyruklar için çoğu zaman Redis eklenir, bir süreç yöneticisi de kuyruk worker'larını çalışır halde tutar. Linkysoft'un hosting markası Hostrena, doğrudan Git'ten yayınlanan Laravel için web uygulaması hosting'i sunar.

Bir Laravel uygulamasını nasıl hızlandırırım?

Bir Laravel uygulamasını config, rota ve view'ları önbelleğe alarak, ilişkileri eager loading ile yükleyerek ve aradığınız veritabanı sütunlarına index ekleyerek hızlandırırsınız. Yavaş işleri kuyruklara taşımak ve ağır sorgu sonuçlarını Redis'te önbelleğe almak daha fazla katkı sağlar. Sunucuda PHP OPcache'i açmak az çabayla büyük bir kazanç getirir.

Bir Laravel uygulamasını nasıl test ederim?

Bir Laravel uygulamasını, her yeni projede kurulu gelen PHPUnit ya da Pest ile test edersiniz. Feature testleri rotalarınıza sahte istekler gönderip yanıtı ve veritabanını kontrol eder, unit testleri ise tek tek sınıfları kontrol eder. php artisan test komutu tüm test paketini çalıştırır.

Laravel çok kullanıcılı büyük uygulamaları kaldırabilir mi?

Laravel; önbellek, kuyruklar, veritabanı index'leri ve bir yük dengeleyici arkasında birden fazla uygulama sunucusuyla iyi sunucularda çalıştığında çok kullanıcılı büyük uygulamaları kaldırabilir. Sınır nadiren framework'ün kendisidir, genellikle yavaş sorgular ve eksik önbellekler sınırı belirler. Linkysoft bu nedenle özel web uygulamalarını PHP, Laravel, MySQL ve Redis ile geliştirir.

Laravel sürümümü ne sıklıkla yükseltmeliyim?

Laravel sürümünüzü en geç mevcut sürümünüz güvenlik düzeltmesi almayı bırakmadan önce yükseltmelisiniz. Laravel yaklaşık yılda bir büyük sürüm yayınlar ve her biri bir yükseltme rehberiyle gelir. Küçük ve düzenli yükseltmeler, birkaç sürümü birden atlamaktan çok daha kolaydır.