PHP, web sunucusunda çalışan, HTML ile iç içe yazılabilen açık kaynaklı bir betik dilidir. Bir haber sitesinin arka yüzünde çalışan yazılımın, bir e-ticaret sepetinin ya da milyonlarca blogun altyapısı çoğu zaman PHP'dir. Bu rehberde dilin ne olduğunu, nasıl çalıştığını, temel söz dizimini, sürüm gelişimini ve günümüzdeki yerini ölçülebilir ve tarafsız biçimde ele alıyoruz.

PHP Nedir?

PHP, açılımı PHP: Hypertext Preprocessor olan özyinelemeli bir kısaltmadır; dilin ilk günlerinde ise "Personal Home Page" anlamına geliyordu. Temel görevi sunucu tarafında kod çalıştırmak ve sonuçta üretilen HTML'i tarayıcıya göndermektir. Yani ziyaretçi PHP kodunu asla göremez; yalnızca sunucunun ürettiği çıktıyı alır.

PHP yorumlanan (interpreted) ve dinamik türlü bir dildir. Değişken türlerini önceden bildirmek zorunlu değildir, kod derlenmeden doğrudan çalıştırılır ve web isteği bittiğinde bellek serbest bırakılır. Bu "her istek için sıfırdan başla" modeli, dili öğrenmeyi ve dağıtmayı basitleştiren önemli bir özelliktir.

Dil, çalışırken Zend Engine adı verilen bir yürütme çekirdeğine dayanır. Zend Engine, PHP kaynağını ara koda (opcode) çevirir ve çalıştırır. Bu çekirdek, dilin performansını ve bellek yönetimini belirleyen temel bileşendir. Çoğu web işinde geliştirici bu katmanla doğrudan uğraşmaz; ancak performansın nereden geldiğini anlamak, ölçeklenme kararlarında işe yarar.

PHP'nin Kısa Tarihi

PHP, 1990'ların ortasında Rasmus Lerdorf'un kişisel web sayfasındaki ziyaretleri izlemek için yazdığı küçük araçların bir araya gelmesiyle doğdu. Zamanla topluluğun katkısıyla tam teşekküllü bir programlama diline dönüştü. Sonraki yıllarda Zeev Suraski ve Andi Gutmans'ın yeniden yazdığı Zend Engine, dile bugünkü mimari temelini kazandırdı.

Dilin evrimi geniş kullanıcı tabanı sayesinde hızlı ilerledi. Nesne yönelimli programlama yeteneklerinin olgunlaşması, performans odaklı büyük yeniden yazımlar ve modern dil özelliklerinin eklenmesi, PHP'yi basit şablon aracı olmaktan çıkarıp ciddi uygulamaların yazıldığı bir platforma taşıdı. Bu süreçte oluşan geniş topluluğun katkısı, hem kütüphane ekosisteminin hem de belgelerin zenginleşmesini sağladı; bu da yeni geliştiriciler için öğrenme eğrisini yumuşattı.

PHP Nasıl Çalışır?

PHP Nasıl Çalışır? İstek, Yönlendirme, Yürütme, Veri

Bir kullanıcı PHP tabanlı bir sayfayı açtığında şu zincir işler: tarayıcı sunucuya istek gönderir; web sunucusu (örneğin Apache veya Nginx) isteğin bir PHP dosyasına geldiğini görür; PHP yorumlayıcısı dosyayı çalıştırır; kod gerekiyorsa veritabanına bağlanıp veri çeker; sonuçta bir HTML çıktısı üretir; bu çıktı tarayıcıya döndürülür. Tarayıcı yalnızca son HTML'i görür.

  • İstek: Tarayıcı bir URL için sunucuya HTTP isteği yollar.
  • Yönlendirme: Web sunucusu isteği PHP yorumlayıcısına iletir.
  • Yürütme: Zend Engine kodu opcode'a çevirip çalıştırır.
  • Veri: Gerekirse veritabanı (örn. MySQL/PostgreSQL) veya harici servisler çağrılır.
  • Çıktı: Üretilen HTML/JSON tarayıcıya veya istemciye döndürülür.

PHP genellikle klasik LAMP yığınının (Linux, Apache, MySQL, PHP) parçası olarak anılır; ancak Nginx + PHP-FPM gibi modern kombinasyonlar da çok yaygındır. PHP-FPM (FastCGI Process Manager), PHP isteklerini verimli havuzlarda yöneterek yüksek trafikte ölçeklenmeyi kolaylaştırır.

Temel Söz Dizimi ve Kavramlar

PHP kodu <?php ?> etiketleri arasına yazılır ve HTML içine gömülebilir. Değişkenler $ işaretiyle başlar. Aşağıda küçük bir örnek dilin temel yapısını gösterir:

php
<?php
// Degisken ve echo
$isim = "Dunya";
echo "Merhaba, $isim!"; // Merhaba, Dunya!

// Dizi ve dongu
$diller = ["PHP", "Python", "JavaScript"];
foreach ($diller as $dil) {
    echo "<li>$dil</li>";
}

// Kosul
$saat = 14;
if ($saat < 12) {
    echo "Gunaydin";
} else {
    echo "Iyi gunler";
}
?>

Fonksiyonlar ve sınıflar da dilin temel yapı taşlarıdır. Modern PHP'de tür bildirimleri (type hints) ile daha güvenli kod yazılabilir:

php
<?php
// Tur bildirimli fonksiyon
function topla(int $a, int $b): int {
    return $a + $b;
}

// Basit bir sinif
class Makale {
    public function __construct(
        public string $baslik,
        public string $yazar
    ) {}

    public function ozet(): string {
        return "{$this->baslik} - {$this->yazar}";
    }
}

$m = new Makale("PHP Nedir?", "Editor");
echo $m->ozet();
?>

PHP'nin Öne Çıkan Özellikleri

PHP'nin Öne Çıkan Özellikleri: Web için doğmuş, Geniş platform desteği, Büyük standart kütüphane, Dinamik ve nesne yönelimli
  • Web için doğmuş: HTML gömme, form işleme ve oturum yönetimi dile doğal gelir.
  • Geniş platform desteği: Yaygın işletim sistemleri ve web sunucularında çalışır.
  • Büyük standart kütüphane: Dize, dosya, tarih, şifreleme ve veritabanı işlevleri hazır gelir.
  • Dinamik ve nesne yönelimli: Hızlı betik yazımından büyük uygulamalara kadar ölçeklenir.
  • Geniş ekosistem: Composer paketleri, çerçeveler ve hazır CMS'lerle desteklenir.
  • Güçlü topluluk: Kapsamlı belgeler ve geniş bir geliştirici topluluğu mevcuttur.

Sürümler ve Dilin Gelişimi

PHP birbirinden belirgin şekilde farklılaşan sürüm aileleriyle gelişti. Aşağıdaki tablo, ana sürüm ailelerinin getirdiği genel yönelimleri özetler (kesin tarih ve rakam yerine yönelim odaklıdır):

Sürüm ailesiÖne çıkan yönelim
PHP 5.xOlgun nesne yönelimli programlama, istisna yönetimi ve geniş benimsenme
PHP 7.xZend Engine yenilenmesiyle önemli performans ve bellek iyileştirmeleri, skaler tür bildirimleri
PHP 8.xJIT derleyici, match ifadesi, adlandırılmış argümanlar, enum, readonly özellikler gibi modern dil eklentileri

Genel eğilim nettir: her ana sürüm ailesi daha iyi performans, daha güçlü tür sistemi ve daha ifadeli söz dizimi yönünde ilerledi. Yeni projelerde güncel ve desteklenen sürüm ailesini kullanmak hem hız hem de güvenlik açısından önerilir.

Çerçeveler ve İçerik Yönetim Sistemleri

PHP'nin gücü yalnızca dilin kendisinde değil, üzerinde kurulmuş zengin ekosistemdedir. Çerçeveler (framework) yapıyı ve iyi uygulamaları sağlar; içerik yönetim sistemleri (CMS) ise kod yazmadan site kurmayı kolaylaştırır.

AraçTürüTipik kullanım
LaravelÇerçeveModern web uygulamaları, API'ler, hızlı geliştirme
SymfonyÇerçeveKurumsal, modüler ve yeniden kullanılabilir bileşenler
WordPressCMSBlog, haber ve içerik siteleri; geniş eklenti ekosistemi
Drupal / JoomlaCMSYapısal, çok kullanıcılı ve karmaşık içerik projeleri

Özellikle haber ve içerik siteleri dünyasında WordPress'in geniş payı, PHP'yi yayıncılık altyapısının merkezine yerleştirir. Sunucu tarafında çalışan bu mimari, Node.js gibi diğer sunucu çözümleriyle aynı problemi farklı yaklaşımlarla çözer.

Composer ve Paket Ekosistemi

Composer, PHP'nin bağımlılık yöneticisidir. Projede kullanılan kütüphaneleri sürüm kısıtlarıyla tanımlar, indirir ve otomatik yükleme (autoloading) sağlar. Bu, kodun modülerleştirilmesini ve yeniden kullanılabilir paketlerin paylaşılmasını kolaylaştırır.

bash
# Bir kutuphane eklemek
composer require monolog/monolog

# Bagimliliklari kurmak
composer install

# Otomatik yukleme sonrasi kullanim
# require 'vendor/autoload.php';

Ekosistemdeki tutarlılığı PSR (PHP Standards Recommendations) standartları sağlar. Otomatik yükleme, kodlama stili ve arayüzler için ortak kurallar, farklı paketlerin uyum içinde çalışmasına yardımcı olur.

PHP Nerede Kullanılır?

PHP Nerede Kullanılır? İçerik ve haber siteleri, E-ticaret, Web uygulamaları, REST API'ler
  • İçerik ve haber siteleri: CMS tabanlı yayıncılık altyapıları.
  • E-ticaret: Sepet, ödeme akışı ve ürün yönetimi olan mağazalar.
  • Web uygulamaları: Panolar, üyelik sistemleri ve iş uygulamaları.
  • REST API'ler: Mobil ve ön yüz uygulamalarına veri sağlayan servisler.
  • Otomasyon ve komut satırı: CLI betikleri ve zamanlanmış görevler.

Ön yüzde ise genellikle JavaScript devreye girer; PHP sunucu tarafında veriyi hazırlarken, tarayıcı tarafındaki etkileşimi JavaScript yürütür. Bu iş bölümü modern web mimarisinin tipik yapısıdır.

Avantajları ve Sınırları

Güçlü yanlarDikkat edilecekler
Öğrenmesi ve başlaması kolayEski kod tabanlarında tutarsız kalite görülebilir
Geniş hosting desteği ve düşük giriş maliyetiYanlış yapılandırmada güvenlik riskleri artar
Büyük ekosistem ve hazır çözümlerÇok yüksek eş zamanlılık gerektiren bazı senaryolarda farklı mimariler tercih edilebilir
Aktif topluluk ve kapsamlı belgelerSürümler arası geçişlerde uyum testi gerekebilir

Diğer dillerle karşılaştırma yaparken tek bir "en iyi" dil yoktur; seçim projeye bağlıdır. Genel amaçlı ve veri odaklı işlerde Python öne çıkabilirken, web yayıncılığı ve CMS ağırlıklı projelerde PHP'nin olgun ekosistemi belirgin bir avantaj sağlar.

Güvenlik ve İyi Uygulamalar

  • Girdi doğrulama: Kullanıcıdan gelen her veriyi doğrulayın ve temizleyin.
  • Hazır ifadeler (prepared statements): SQL enjeksiyonuna karşı PDO veya mysqli ile parametreli sorgular kullanın.
  • Çıktı kaçışı: HTML'e yazarken XSS'e karşı çıktıyı kaçışlayın (örn. htmlspecialchars).
  • Parola güvenliği: Parolaları password_hash ile saklayın, asla düz metin tutmayın.
  • Güncel sürüm: Desteklenen sürümü kullanın ve bağımlılıkları düzenli güncelleyin.
php
<?php
// SQL enjeksiyonuna karsi hazir ifade (PDO)
$stmt = $pdo->prepare("SELECT * FROM haberler WHERE id = :id");
$stmt->execute(["id" => $id]);
$haber = $stmt->fetch();

// Parola saklama
$hash = password_hash($parola, PASSWORD_DEFAULT);
if (password_verify($girilen, $hash)) {
    // giris basarili
}
?>

Performans, Önbellek ve Yayına Alma

PHP'nin performansı yalnızca dilin sürümüne bağlı değildir; çalışma ortamı en az kod kadar belirleyicidir. Üretim sunucularında genellikle bir opcode önbelleği kullanılır. Bu mekanizma, PHP dosyalarının her istekte yeniden derlenmesini önleyerek ara kodu bellekte tutar ve tekrar eden işleri hızlandırır.

Yüksek trafikli haber ve içerik sitelerinde uygulama düzeyinde önbellekleme de kritik önemdedir. Sık erişilen sorgu sonuçlarını veya oluşturulan sayfa parçalarını bellekte tutan çözümler (örneğin bellek içi anahtar-değer depoları), veritabanı yükünü belirgin şekilde azaltır. Statik varlıkların bir CDN üzerinden sunulması ve HTTP önbellek başlıklarının doğru ayarlanması da toplam yanıtı hızlandırır.

Yayına alma tarafında modern PHP projeleri genellikle Composer ile bağımlılıklarını kurar, ortam değişkenleriyle yapılandırılır ve bir sürüm kontrol sistemi üzerinden dağıtılır. Otomatik testler ve aşamalı geçiş (staging) ortamları, canlıya çıkmadan önce hataları yakalamaya yardımcı olur. Bu disiplin, dilin kendisinden bağımsız olarak yazılım kalitesini yükseltir.

Sıkça Sorulan Sorular

PHP hâlâ güncel bir dil mi?

Evet. PHP aktif olarak geliştirilmeye devam eden, geniş bir kod tabanını ayakta tutan ve düzenli sürümler alan bir dildir. Özellikle web yayıncılığı ve içerik yönetimi alanında geniş bir kurulu tabana sahiptir.

PHP öğrenmek zor mu?

PHP, düşük giriş maliyetiyle bilinir. Temel bir sayfayı çalıştırmak için gereken bilgi azdır; ancak büyük ve bakımı kolay uygulamalar yazmak, nesne yönelimli tasarım ve iyi uygulamalarla derinleşmeyi gerektirir. Bu yol her dilde benzerdir.

PHP ile JavaScript aynı şey mi?

Hayır. PHP klasik olarak sunucu tarafında çalışır; JavaScript ise tarayıcıda çalışan ön yüz dilidir (ve Node.js ile sunucuda da çalışabilir). Çoğu projede ikisi birlikte, farklı katmanlarda kullanılır.

Özet

PHP, web için tasarlanmış, olgun ve geniş ekosistemli bir sunucu tarafı dilidir. HTML üretmek, veritabanıyla çalışmak ve dinamik siteler kurmak için düşük giriş maliyeti sunar; modern sürümleri ise performans ve tür güvenliği açısından ciddi ilerleme kaydetmiştir. Dilin nerede durduğunu daha iyi anlamak için genel programlama dilleri rehberimize göz atabilirsiniz.