PHP, web sunucusunda calisan, HTML ile ic ice yazilabilen acik kaynakli bir betik dilidir. Bir haber sitesinin arka yuzunde calisan yazilimin, bir e-ticaret sepetinin ya da milyonlarca blogun altyapisi cogu zaman PHP'dir. Bu rehberde dilin ne oldugunu, nasil calistigini, temel sozdizimini, surum gelisimini ve gunumuzdeki yerini olculebilir ve tarafsiz bicimde ele aliyoruz.

PHP Nedir?

PHP, acilimi PHP: Hypertext Preprocessor olan ozyinelemeli bir kisaltmadir; dilin ilk gunlerinde ise "Personal Home Page" anlamina geliyordu. Temel gorevi sunucu tarafinda kod calistirmak ve sonucta uretilen HTML'i tarayiciya gondermektir. Yani ziyaretci PHP kodunu asla goremez; yalnizca sunucunun urettigi ciktiyi alir.

PHP yorumlanan (interpreted) ve dinamik turlu bir dildir. Degisken turlerini onceden bildirmek zorunlu degildir, kod derlenmeden dogrudan calistirilir ve web istegi bittiginde bellek serbest birakilir. Bu "her istek icin sifirdan basla" modeli, dili ogrenmeyi ve dagitmayi basitlestiren onemli bir ozelliktir.

Dil, calisirken Zend Engine adi verilen bir yurutme cekirdegine dayanir. Zend Engine, PHP kaynagini ara koda (opcode) cevirir ve calistirir. Bu cekirdek, dilin performansini ve bellek yonetimini belirleyen temel bilesendir. Cogu web isinde gelistirici bu katmanla dogrudan ugrasmaz; ancak performansin nereden geldigini anlamak, olceklenme kararlarinda ise yarar.

PHP'nin Kisa Tarihi

PHP, 1990'larin ortasinda Rasmus Lerdorf tarafindan kisisel web sayfasindaki ziyaretleri izlemek icin yazdigi kucuk araclarin bir araya gelmesiyle dogdu. Zamanla toplulugun katkisiyla tam teşekkullu bir programlama diline donustu. Sonraki yillarda Zeev Suraski ve Andi Gutmans'in yeniden yazdigi Zend Engine, dile bugunku mimari temelini kazandirdi.

Dilin evrimi genis kullanici tabani sayesinde hizli ilerledi. Nesne yonelimli programlama yeteneklerinin olgunlasmasi, performans odakli buyuk yeniden yazimlar ve modern dil ozelliklerinin eklenmesi, PHP'yi basit sablon araci olmaktan cikarip ciddi uygulamalarin yazildigi bir platforma tasidi. Bu surecte olusan genis toplulugun katkisi, hem kutuphane ekosisteminin hem de belgelerin zenginlesmesini sagladi; bu da yeni gelistiriciler icin ogrenme egrisini yumusatti.

PHP Nasil Calisir?

Bir kullanici PHP tabanli bir sayfayi actiginda su zincir isler: tarayici sunucuya istek gonderir; web sunucusu (ornegin Apache veya Nginx) istegin bir PHP dosyasina geldigini gorur; PHP yorumlayicisi dosyayi calistirir; kod gerekiyorsa veritabanina baglanip veri ceker; sonucta bir HTML ciktisi uretir; bu cikti tarayiciya donulur. Tarayici yalnizca son HTML'i gorur.

  • Istek: Tarayici bir URL icin sunucuya HTTP istegi yollar.
  • Yonlendirme: Web sunucusu istegi PHP yorumlayicisina iletir.
  • Yurutme: Zend Engine kodu opcode'a cevirip calistirir.
  • Veri: Gerekirse veritabani (orn. MySQL/PostgreSQL) veya harici servisler cagrilir.
  • Cikti: Uretilen HTML/JSON tarayiciya veya istemciye donulur.

PHP genellikle klasik LAMP yiginininin (Linux, Apache, MySQL, PHP) parcasi olarak anilir; ancak Nginx + PHP-FPM gibi modern kombinasyonlar da cok yaygindir. PHP-FPM (FastCGI Process Manager), PHP isteklerini verimli havuzlarda yoneterek yuksek trafikte olceklenmeyi kolaylastirir.

Temel Sozdizimi ve Kavramlar

PHP kodu <?php ?> etiketleri arasina yazilir ve HTML icine gomulebilir. Degiskenler $ isaretiyle baslar. Asagida kucuk bir ornek dilin temel yapisini gosterir:

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 siniflar da dilin temel yapi taslaridir. Modern PHP'de tur bildirimleri (type hints) ile daha guvenli kod yazilabilir:

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 One Cikan Ozellikleri

  • Web icin dogmus: HTML gomme, form isleme ve oturum yonetimi dile dogal gelir.
  • Genis platform destegi: Yaygin isletim sistemleri ve web sunucularinda calisir.
  • Buyuk standart kutuphane: Dize, dosya, tarih, sifreleme ve veritabani islevleri hazir gelir.
  • Dinamik ve nesne yonelimli: Hizli betik yazimindan buyuk uygulamalara kadar olceklenir.
  • Genis ekosistem: Composer paketleri, cerceveler ve hazir CMS'lerle desteklenir.
  • Guclu topluluk: Kapsamli belgeler ve genis bir gelistirici toplulugu mevcuttur.

Surumler ve Dilin Gelisimi

PHP birbirinden belirgin sekilde farklilasan surum aileleriyle gelisti. Asagidaki tablo, ana surum ailelerinin getirdigi genel yonelimleri ozetler (kesin tarih ve rakam yerine yonelim odaklidir):

Surum ailesiOne cikan yonelim
PHP 5.xOlgun nesne yonelimli programlama, istisna yonetimi ve genis benimsenme
PHP 7.xZend Engine yenilenmesiyle onemli performans ve bellek iyilestirmeleri, skaler tur bildirimleri
PHP 8.xJIT derleyici, match ifadesi, adlandirilmis argumanlar, enum, readonly ozellikler gibi modern dil eklentileri

Genel egilim nettir: her ana surum ailesi daha iyi performans, daha guclu tur sistemi ve daha ifadeli sozdizimi yonunde ilerledi. Yeni projelerde guncel ve desteklenen surum ailesini kullanmak hem hiz hem de guvenlik acisindan onerilir.

Cerceveler ve Icerik Yonetim Sistemleri

PHP'nin gucu yalnizca dilin kendisinde degil, uzerinde kurulmus zengin ekosistemdedir. Cerceveler (framework) yapiyi ve iyi uygulamalari saglar; icerik yonetim sistemleri (CMS) ise kod yazmadan site kurmayi kolaylastirir.

AracTuruTipik kullanim
LaravelCerceveModern web uygulamalari, API'ler, hizli gelistirme
SymfonyCerceveKurumsal, moduler ve yeniden kullanilabilir bilesenler
WordPressCMSBlog, haber ve icerik siteleri; genis eklenti ekosistemi
Drupal / JoomlaCMSYapisal, cok kullanicili ve karmasik icerik projeleri

Ozellikle haber ve icerik siteleri dunyasinda WordPress'in genis payi, PHP'yi yayincilik altyapisinin merkezine yerlestirir. Sunucu tarafinda calisan bu mimari, Node.js gibi diger sunucu cozumleriyle ayni problemi farkli yaklasimlarla cozer.

Composer ve Paket Ekosistemi

Composer, PHP'nin bagimlilik yoneticisidir. Projede kullanilan kutuphaneleri surum kisitlariyla tanimlar, indirir ve otomatik yukleme (autoloading) saglar. Bu, kodun modulerlestirilmesini ve yeniden kullanilabilir paketlerin paylasilmasini kolaylastirir.

bash
# Bir kutuphane eklemek
composer require monolog/monolog

# Bagimliliklari kurmak
composer install

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

Ekosistemdeki tutarliligi PSR (PHP Standards Recommendations) standartlari saglar. Otomatik yukleme, kodlama stili ve arayuzler icin ortak kurallar, farkli paketlerin uyum icinde calismasina yardimci olur.

PHP Nerede Kullanilir?

  • Icerik ve haber siteleri: CMS tabanli yayincilik altyapilari.
  • E-ticaret: Sepet, odeme akisi ve urun yonetimi olan magazalar.
  • Web uygulamalari: Panolar, uyelik sistemleri ve is uygulamalari.
  • REST API'ler: Mobil ve on yuz uygulamalarina veri saglayan servisler.
  • Otomasyon ve komut satiri: CLI betikleri ve zamanlanmis gorevler.

On yuzde ise genellikle JavaScript devreye girer; PHP sunucu tarafinda veriyi hazirlarken, tarayici tarafindaki etkilesimi JavaScript yurutur. Bu is bolumu modern web mimarisinin tipik yapisidir.

Avantajlari ve Sinirlari

Guclu yanlarDikkat edilecekler
Ogrenmesi ve baslamasi kolayEski kod tabanlarinda tutarsiz kalite gorulebilir
Genis hosting destegi ve dusuk giris maliyetiYanlis yapilandirmada guvenlik riskleri artar
Buyuk ekosistem ve hazir cozumlerCok yuksek eszamanlilik gerektiren bazi senaryolarda farkli mimariler tercih edilebilir
Aktif topluluk ve kapsamli belgelerSurumler arasi gecislerde uyum testi gerekebilir

Diger dillerle karsilastirma yaparken tek bir "en iyi" dil yoktur; secim projeye baglidir. Genel amacli ve veri odakli islerde Python one cikabilirken, web yayinciligi ve CMS agirlikli projelerde PHP'nin olgun ekosistemi belirgin bir avantaj saglar.

Guvenlik ve Iyi Uygulamalar

  • Girdi dogrulama: Kullanicidan gelen her veriyi dogrulayin ve temizleyin.
  • Hazir ifadeler (prepared statements): SQL enjeksiyonuna karsi PDO veya mysqli ile parametreli sorgular kullanin.
  • Cikti kacisi: HTML'e yazarken XSS'e karsi ciktiyi kacislayin (orn. htmlspecialchars).
  • Parola guvenligi: Parolalari password_hash ile saklayin, asla duz metin tutmayin.
  • Guncel surum: Desteklenen surumu kullanin ve bagimliliklari duzenli guncelleyin.
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, Onbellek ve Yayina Alma

PHP'nin performansi yalnizca dilin surumune bagli degildir; calisma ortami en az kod kadar belirleyicidir. Uretim sunucularinda genellikle bir opcode onbellegi kullanilir. Bu mekanizma, PHP dosyalarinin her istekte yeniden derlenmesini onleyerek ara kodu bellekte tutar ve tekrar eden isleri hizlandirir.

Yuksek trafikli haber ve icerik sitelerinde uygulama duzeyinde onbellekleme de kritik onemdedir. Sik erisilen sorgu sonuclarini veya olusturulan sayfa parcalarini bellekte tutan cozumler (ornegin bellek ici anahtar-deger depolari), veritabani yukunu belirgin sekilde azaltir. Statik varliklarin bir CDN uzerinden sunulmasi ve HTTP onbellek basliklarinin dogru ayarlanmasi da toplam yaniti hizlandirir.

Yayina alma tarafinda modern PHP projeleri genellikle Composer ile bagimliliklarini kurar, ortam degiskenleriyle yapilandirilir ve bir surum kontrol sistemi uzerinden dagitilir. Otomatik testler ve asamali gecis (staging) ortamlari, canliya cikmadan once hatalari yakalamaya yardimci olur. Bu disiplin, dilin kendisinden bagimsiz olarak yazilim kalitesini yukseltir.

Sikca Sorulan Sorular

PHP hala guncel bir dil mi?

Evet. PHP aktif olarak gelistirilmeye devam eden, genis bir kod tabanini ayakta tutan ve duzenli surumler alan bir dildir. Ozellikle web yayinciligi ve icerik yonetimi alaninda genis bir kurulu tabana sahiptir.

PHP ogrenmek zor mu?

PHP, dusuk giris maliyetiyle bilinir. Temel bir sayfayi calistirmak icin gereken bilgi azdir; ancak buyuk ve bakimi kolay uygulamalar yazmak, nesne yonelimli tasarim ve iyi uygulamalarla derinlesmeyi gerektirir. Bu yol her dilde benzerdir.

PHP ile JavaScript ayni sey mi?

Hayir. PHP klasik olarak sunucu tarafinda calisir; JavaScript ise tarayicida calisan on yuz dilidir (ve Node.js ile sunucuda da calisabilir). Cogu projede ikisi birlikte, farkli katmanlarda kullanilir.

Ozet

PHP, web icin tasarlanmis, olgun ve genis ekosistemli bir sunucu tarafi dilidir. HTML uretmek, veritabaniyla calismak ve dinamik siteler kurmak icin dusuk giris maliyeti sunar; modern surumleri ise performans ve tur guvenligi acisindan ciddi ilerleme kaydetmistir. Dilin nerede durdugunu daha iyi anlamak icin genel programlama dilleri rehberimize goz atabilirsiniz.