PHP hakkında yıllardır dolaşan bir önyargı var: "eski, dağınık, güvensiz." Bu yargı bir zamanlar kısmen haklıydı, ama bugünkü PHP ile 2010'ların PHP'si arasında neredeyse başka bir dil kadar fark var. Katı tür bildirimleri, gelişmiş bir paket yöneticisi, olgun çerçeveler (framework) ve dikkatle tasarlanmış güvenlik araçlarıyla PHP, ciddi e-ticaret ve özel yazılım projeleri için hâlâ en pragmatik seçeneklerden biri. Bu yazıda modern PHP'nin nasıl yazıldığını, hangi kalıpların artık standart kabul edildiğini ve güvenli bir temeli nasıl kurabileceğinizi ele alacağız.

Sürümlerin Önemi ve Neden Güncel Kalmalısınız
PHP ekibi her yıl yeni bir ana sürüm yayınlıyor ve her sürüm hem performans hem de dil özellikleri açısından belirgin sıçramalar getiriyor. PHP 8 ile gelen JIT derleyici (just-in-time compilation), isimli argümanlar (named arguments), match ifadesi, enum'lar ve readonly özellikler dilin ifade gücünü tamamen değiştirdi. Güncel sürümde kalmak sadece hız meselesi değil; güvenlik yamalarının devam ettiği tek yol da budur.
Desteği bitmiş (end-of-life) bir PHP sürümünde çalışan bir uygulama, bilinen açıklara karşı savunmasızdır. Bir e-ticaret sitesinde bu, doğrudan müşteri verisinin ve ödeme akışının risk altında olması demektir. Bu yüzden altyapı kararlarını verirken sürüm ömrünü de göz önünde bulundurmak gerekir.
- Performans: Her ana sürüm, aynı donanımda daha fazla istek işler.
- Güvenlik: Yalnızca desteklenen sürümler yama alır.
- Dil özellikleri: Enum, readonly, match gibi araçlar daha az hatalı kod yazmanızı sağlar.
- Ekosistem uyumu: Güncel kütüphaneler eski sürümleri hızla bırakır.
Tür Güvenliği: Sessiz Hataları Erken Yakalamak
Modern PHP'nin en büyük dönüşümü tür sisteminde yaşandı. Artık parametreler, dönüş değerleri ve sınıf özellikleri için tür bildirimi yapabilirsiniz. Dosyanın başına declare(strict_types=1) eklediğinizde PHP, sessiz tür dönüşümlerini reddeder ve hataları çalışma anında değil, geliştirme aşamasında açığa çıkarır.
<?php
declare(strict_types=1);
function toplamHesapla(float $tutar, float $kdvOrani): float
{
return $tutar + ($tutar * $kdvOrani);
}
// Yanlış tür geçilirse PHP hemen uyarır
echo toplamHesapla(100.0, 0.20); // 120.0
Buna bir de statik analiz araçlarını (PHPStan, Psalm) eklediğinizde, kod çalışmadan önce pek çok mantık hatasını görebilirsiniz. Bu araçlar, "bu değişken null olabilir mi?" gibi soruları sizin yerinize sorar ve büyük bir kod tabanında güven duygusunu tamamen değiştirir.
Tür güvenliği bir kısıtlama değil, bir güvenlik ağıdır. Kod büyüdükçe bu ağ, gece uykunuzu korur.
Composer: Bağımlılık Yönetiminin Kalbi
Modern PHP'yi eski PHP'den ayıran en somut araç Composer'dır. Kütüphaneleri elle indirip klasöre atmak yerine, ihtiyaçlarınızı bir composer.json dosyasında tanımlar ve tek komutla kurarsınız. Composer aynı zamanda otomatik yükleme (autoloading) sağlar; sınıflarınızı require ile tek tek çağırmak zorunda kalmazsınız.
- Bağımlılık çözümü: Sürüm çakışmalarını Composer sizin yerinize hesaplar.
- Kilit dosyası: composer.lock ile her ortamda aynı sürümler kurulur.
- PSR-4 otomatik yükleme: Namespace ve dizin yapısı birbirine eşlenir.
- Güvenlik denetimi: composer audit ile bilinen açıkları taratabilirsiniz.
Bir projeyi devraldığınızda ilk baktığımız şeylerden biri Composer yapılandırmasıdır; çünkü bağımlılıkların ne kadar güncel ve düzenli tutulduğu, projenin genel sağlığı hakkında çok şey söyler.

Güvenli Kalıplar: Baştan Doğru Kurmak
PHP'nin kötü ününün büyük kısmı, dilin kendisinden değil, güvensiz yazılmış eski kodlardan geliyordu. Modern uygulamada bu tuzakların hepsinin bilinen çözümleri var.
SQL Enjeksiyonuna Karşı Hazır İfadeler
Kullanıcıdan gelen veriyi asla doğrudan sorguya yapıştırmayın. PDO ile hazır ifadeler (prepared statements) kullanarak veriyi sorgudan ayırın:
<?php
$stmt = $pdo->prepare('SELECT * FROM urunler WHERE kategori = :kategori');
$stmt->execute(['kategori' => $kullaniciGirdisi]);
$urunler = $stmt->fetchAll();
XSS ve Çıktı Kaçışı
Ekrana bastığınız her kullanıcı verisini htmlspecialchars ile kaçırın. Şablon motorları (Twig, Blade) bunu varsayılan olarak yapar; ham PHP yazarken ise sorumluluk sizindir.
- Girdiyi doğrula, çıktıyı kaçır.
- Parolaları password_hash ile saklayın; asla düz metin tutmayın.
- CSRF jetonlarıyla form isteklerini doğrulayın.
- Hassas ayarları koda değil ortam değişkenlerine (environment variables) koyun.
Berasoft'un Yaklaşımı
Berasoft'ta geliştirdiğimiz e-ticaret ve özel yazılım projelerinde bu ilkeleri baştan kurmaya özen gösteriyoruz: katı tür bildirimleri, Composer ile düzenli bağımlılık yönetimi ve güvenlik kalıplarının varsayılan olarak devrede olması. Böylece proje büyüdükçe teknik borç birikmiyor, bakım maliyeti öngörülebilir kalıyor. Kendi PHP tabanlı projenizi modern bir temele oturtmak istiyorsanız projenizi konuşalım.
Sonuç
Modern PHP, on yıl önceki itibarını çoktan geride bıraktı. Güncel bir sürüm, katı tür güvenliği, Composer ile düzenli bağımlılık yönetimi ve güvenlik kalıplarını varsayılan hâline getirmek; hızlı, sürdürülebilir ve güvenli uygulamalar için sağlam bir zemin sunuyor. Önemli olan aracın kendisi değil, onu doğru kullanan disiplindir. Bu disiplini baştan kurarsanız, PHP size uzun yıllar sadık ve verimli bir temel olarak hizmet eder.
Bir sonraki projeniz için hazır mısınız?
Okuduklarınızı işinize uygulamak veya dijital dönüşümünüzü konuşmak isterseniz, ekibimiz bir mesaj uzağınızda.

Yorum Yap