PHP ve Laravel öğrenme yol haritası: temelden dağıtıma
Beceri rehberi

PHP ve Laravel öğrenme yol haritası: temelden dağıtıma

Hazırlayan: Mindset Institute EditörlüğüGüncellendi: 5 dk okuma

PHP ve Laravel ile modern web geliştirmeyi öğrenin: mimari, yönlendirme, Eloquent, yetkilendirme, kuyruklar, test ve dağıtım adımlarıyla yol haritası.

PHP ve Laravel nedir, neden hâlâ kullanılır?

PHP, web için tasarlanmış ve sunucu tarafında çalışan bir programlama dilidir. Uzun geçmişi sayesinde çok sayıda web sitesinin ve içerik yönetim sisteminin altyapısında yer alır. Laravel ise PHP üzerine kurulmuş, uygulamayı düzenli bir yapıda geliştirmeyi sağlayan bir çatıdır (framework). Yönlendirme, veri tabanı erişimi, oturum, kimlik doğrulama, kuyruklar ve test gibi her projede gereken parçaları hazır sunar.

Modern PHP, eski betik tarzından çok farklıdır: tip bildirimleri, sınıflar, ad alanları, arayüzler ve bağımlılık yönetimi için paket yöneticisi (Composer) ile çalışır. Dolayısıyla PHP ve Laravel öğrenmek, eski sayfa içi kod karışımını değil, nesne yönelimli ve katmanlı bir uygulama geliştirmeyi öğrenmektir. Mevcut PHP uygulamalarının bakımı, yeni API geliştirme ve ajans projeleri bu becerinin kullanıldığı başlıca alanlardır.

Başlangıç: modern PHP ve Laravel mimarisi

Laravel'e geçmeden önce PHP'nin temelini bilmek gerekir: değişkenler, diziler, fonksiyonlar, sınıflar, ad alanları, hata yönetimi ve Composer ile paket kurulumu. Sonra Laravel'in mimarisini kavrayın: istek bir giriş noktasından girer, ara katmanlardan (middleware) geçer, yönlendiriciyle ilgili denetleyiciye (controller) ulaşır, yanıt olarak geri döner.

Bu aşamada tanışılacak başlıca kavramlar: • Servis konteyneri ve bağımlılık enjeksiyonu: sınıfların bağımlılıklarını çatının sağlaması • Servis sağlayıcılar: uygulamanın başlangıç yapılandırması • Ortam yapılandırması: ayarların koddan ayrı tutulması • Artisan komut satırı aracı: kod iskeleti, veri tabanı işlemleri ve bakım komutları

Öğrenmeyi pekiştirmek için küçük bir ilk proje seçin; örneğin kullanıcı kaydı, giriş ve her kullanıcının kendi notlarını yönettiği bir not uygulaması. Bu proje yönlendirmeyi, doğrulamayı, veri tabanı göçlerini ve yetkilendirmeyi tek bir akışta karşınıza çıkarır.

Bu kavramları anlamadan örnek kodu kopyalamak, projenin büyüdüğü noktada anlaşılmaz hatalara yol açar.

Yönlendirme, istek ve yanıt katmanı

Yönlendirme, hangi adresin hangi koda gideceğini tanımlar. Laravel'de yollar, HTTP yöntemine (GET, POST gibi) ve adrese göre denetleyiciye bağlanır. Denetleyici istekten gelen veriyi alır, iş mantığını çağırır ve yanıt döndürür. İstek doğrulama (validation) bu aşamada yapılır: dışarıdan gelen hiçbir veriye güvenilmez, her alan kurallara göre kontrol edilir.

Yanıt tarafında iki yaygın biçim vardır: Blade şablonlarıyla üretilen sayfalar ve API için JSON yanıtları. API geliştirirken kaynak sınıfları (resource) ile yanıtın biçimini veri tabanı yapısından ayırmak, sonradan değişiklik yapmayı kolaylaştırır. Hata durumlarında anlamlı durum kodları ve mesajlar döndürmek, istemci tarafındaki geliştiricinin işini hafifletir. Denetleyicileri ince tutup iş mantığını ayrı sınıflara taşımak okunabilir kod için temel kuraldır.

Eloquent ORM ve veri katmanı

Eloquent, Laravel'in nesne ilişkisel eşleştirme (ORM) katmanıdır. Her veri tabanı tablosu bir model sınıfıyla temsil edilir ve sorgular SQL yazmadan akıcı bir sözdizimiyle kurulur. Modeller arasında bire bir, bire çok ve çoktan çoğa ilişkiler tanımlanır. Örneğin bir sipariş modeli, müşteri modeline ve sipariş kalemlerine bağlanır.

Veri tabanı yapısı göçler (migration) ile sürüm kontrolünde tutulur; böylece tablo değişiklikleri ekip içinde tekrar edilebilir hale gelir. Test ve geliştirme için örnek veri üretmek de tohumlayıcılar (seeder) ve üretici sınıflarla (factory) yapılır. En sık görülen performans hatası tekrarlayan sorgu (N artı bir) sorunudur: ilişkili verileri döngü içinde tek tek çekmek yerine ilişkiyi önceden yüklemek (eager loading) gerekir. Eloquent'in kolaylığı SQL bilmeyi gereksiz kılmaz; üretilen sorguları anlamak yine geliştiricinin sorumluluğundadır.

İş mantığı, yetkilendirme ve güvenlik

İş kuralları denetleyiciye değil, servis ya da eylem (action) sınıflarına yazıldığında test edilebilir ve yeniden kullanılabilir olur. Kimlik doğrulama (kullanıcı kim) ve yetkilendirme (kullanıcı ne yapabilir) ayrı kavramlardır. Laravel'de yetkilendirme kapıları (gate) ve politikalar (policy) ile kaynak bazında kural yazılır: örneğin bir kullanıcı yalnızca kendi siparişini görüntüleyebilir.

Güvenlikte temel kontrol listesi: • Tüm girdiyi doğrulamak ve sorguları parametreli yazmak (SQL enjeksiyonuna karşı) • Form isteklerinde sahte istek korumasını (CSRF) açık tutmak • Çıktıyı kaçışlamak (XSS'e karşı) ve dosya yüklemelerini kısıtlamak • Parolaları geri döndürülemez biçimde saklamak • Gizli anahtarları kodda değil ortam yapılandırmasında tutmak, bağımlılıkları güncel tutmak

Çatının sunduğu korumalar, onları devre dışı bırakan ya da atlayan koddan sonra işe yaramaz.

Kuyruklar, olaylar, test ve dağıtım

Uzun süren işler, örneğin e-posta göndermek, rapor üretmek, görsel işlemek, kullanıcıyı bekletmeden arka planda kuyruk (queue) ile yürütülür. Olaylar (event) ve dinleyiciler, bir işlem gerçekleştiğinde bağımsız tepkilerin tetiklenmesini sağlar: sipariş oluştu, e-posta gitsin, stok düşsün. Zamanlanmış görevler ise düzenli çalışan işleri uygulama içinde tanımlamanıza izin verir.

Test, Laravel öğreniminin ayrılmaz parçasıdır. Birim testler iş mantığını, özellik testleri (feature test) uçtan uca isteği doğrular. Performans için önbellekleme, sorgu iyileştirme ve kuyruk kullanımı öne çıkar. Dağıtımda ortam yapılandırmasının ayrılması, veri tabanı göçlerinin kontrollü çalıştırılması, yapılandırma önbelleğinin yenilenmesi ve kuyruk işçilerinin yönetilmesi gerekir. Üretime çıkmadan önce kayıt (log) ve hata izleme düzenini kurmak, sorunları erken fark etmenizi sağlar.

Örneğin sipariş onaylandığında e-posta göndermek ve stok düşmek ayrı dinleyicilere bırakılırsa, birinde yaşanan hata diğerini engellemez ve kuyruk başarısız işi yeniden deneyebilir. Başarısız işlerin bir tabloda saklanıp incelenmesi, sessiz kayıpları önler.

Mindset programında PHP ve Laravel

Mindset'teki PHP ve Laravel ile Modern Web Geliştirme programının modül başlıkları şunlardır: Modern PHP ve Laravel Mimarisi, Yönlendirme, İstek ve Yanıt Katmanı, Eloquent ORM ve Veri Katmanı, İş Mantığı, Yetkilendirme ve Güvenlik, Kuyruklar, Olaylar ve Zamanlanmış Görevler, Test, Performans ve Dağıtım.

Başlık sırası, bir Laravel uygulamasının mimarisinden başlayıp veri katmanı, güvenlik ve arka plan işlerini geçerek test ve dağıtımla biter.

İlgili Mindset programı

PHP ve Laravel ile Modern Web Geliştirme

Sık sorulanlar

Sık sorulan sorular

Laravel öğrenmeden önce PHP bilmek şart mı?

Evet, PHP temelini bilmek gerekir. Sınıflar, ad alanları, diziler ve hata yönetimi Laravel kodunun her yerinde karşınıza çıkar. PHP'yi temel düzeyde öğrenip Composer kullanmayı kavradıktan sonra Laravel'e geçmek, çatıyı büyü gibi görmek yerine neyin nasıl çalıştığını anlamanızı sağlar.

Laravel ile hangi tür projeler geliştirilir?

Kurumsal yönetim panelleri, e-ticaret altyapıları, mobil uygulamalar için API servisleri, içerik platformları ve üyelik sistemleri tipik örneklerdir. Kimlik doğrulama, kuyruk ve veri tabanı gibi ortak ihtiyaçları hazır sunduğu için orta ve büyük ölçekli web uygulamalarında sıklıkla seçilir.

Eloquent ile ham SQL arasında nasıl seçim yapılır?

Günlük işlerin çoğunda Eloquent okunabilir ve güvenlidir. Çok karmaşık raporlama sorgularında ya da performansın kritik olduğu yerlerde sorgu oluşturucu ya da ham SQL daha uygun olabilir. Hangisini kullanırsanız kullanın, parametreli sorgu yazmak ve üretilen sorguyu kontrol etmek gerekir.

PHP geliştiricisi olarak sonraki adım ne olmalı?

Laravel temelini oturttuktan sonra API tasarımı, veri tabanı performansı, otomatik test ve dağıtım süreçlerine yönelmek mantıklıdır. İsteğe göre ön yüz çatıları ya da farklı bir arka uç dili öğrenmek de bakış açınızı genişletir. Önce mevcut projede derinleşmek, birçok araca yüzeysel dokunmaktan verimlidir.

PHP ve Laravel Nasıl Öğrenilir? Öğrenme Sırası