PHP, yıllardır web'in arkasındaki itici güç olmuştur. Facebook'tan Wikipedia'ya, WordPress'ten Slack'e kadar milyarlarca insanın kullandığı sistemlerin kalbinde yer alır. "PHP öldü" söylentilerine rağmen, modern PHP (sürüm 8 ve sonrası), getirdiği performans iyileştirmeleri, güçlü tip sistemleri ve profesyonel araçlarıyla hiç olmadığı kadar canlı ve rekabetçi. Bu makale, sıfırdan başlayarak veya eski bilgilerinizi güncelleyerek modern PHP ile nasıl profesyonel uygulamalar geliştirebileceğinizi adım adım anlatacaktır.

Adım 1: Sonuca Ulaşma Sürecim ve Adım Adım Açıklama

Bu makaleyi oluştururken amacım, sadece kod parçacıkları sunmak değil, aynı zamanda "neden" ve "nasıl" sorularına cevap vererek sağlam bir zihinsel model oluşturmanıza yardımcı olmaktır.

1.A. Temel Kurulum ve İlk Kod

Her şeyden önce, kod yazabileceğiniz bir ortama ihtiyacınız var.

  • Yerel Geliştirme Ortamı: Bilgisayarınıza XAMPP, WAMP (Windows), MAMP (macOS) gibi paket programlardan birini kurarak Apache (web sunucusu), MySQL (veritabanı) ve PHP'yi tek seferde kurabilirsiniz. Bu, en hızlı başlangıç yöntemidir.

  • "Merhaba, Dünya!" ile Başlangıç: PHP kodları <?php ... ?> etiketleri arasına yazılır. Web sunucunuzun kök dizininde (genellikle htdocs veya www) index.php adında bir dosya oluşturun ve içine şunu yazın:

<?php // echo komutu, ekrana çıktı vermemizi sağlar. // Her komutun sonuna noktalı virgül (;) konulur. echo "Merhaba, modern PHP dünyası!"; ?>
Tarayıcınızda http://localhost/index.php adresine giderek çıktıyı görebilirsiniz. Tebrikler, ilk PHP kodunuzu yazdınız!

1.B. PHP'nin Çekirdek Kavramları

Her dilin temel yapı taşları vardır. PHP'de bunlar şunlardır:

  • Değişkenler: Verileri saklamak için kullanılır ve her zaman $ işareti ile başlar.

<?php
  $mesaj = "Bu bir değişkendir."; // String (Metin)
  $yil = 2025;                   // Integer (Tam sayı)
  $fiyat = 199.99;                // Float (Ondalıklı sayı)
  $aktifMi = true;               // Boolean (Mantıksal: true/false)

  echo $mesaj;
?>

Kontrol Yapıları (Karar ve Döngüler): Kodunuzun akışını kontrol etmenizi sağlar.

<?php
  $yas = 20;

  // if-else: Bir koşul doğruysa bir bloğu, yanlışsa başka bir bloğu çalıştırır.
  if ($yas >= 18) {
    echo "Ehliyet alabilirsiniz.";
  } else {
    echo "Ehliyet alamazsınız.";
  }

  echo "<br>"; // Satır atlamak için HTML etiketi bastık.

  // for döngüsü: Belirli sayıda tekrar eden işlemler için kullanılır.
  for ($i = 1; $i <= 5; $i++) {
    echo "Sayı: " . $i . "<br>"; // '.' operatörü metinleri birleştirir.
  }
?>

Fonksiyonlar: Tekrar tekrar kullanılabilen kod bloklarıdır.

<?php
  // Bir fonksiyon tanımlama
  function selamla($isim) {
    return "Merhaba, " . $isim . "!";
  }

  // Fonksiyonu çağırma
  $selamlamaMesaji = selamla("Ahmet");
  echo $selamlamaMesaji; // Çıktı: Merhaba, Ahmet!
?>

1.C. Modern PHP'ye Geçiş: Profesyonellerin Kullandığı Araçlar

Eğer sadece yukarıdakileri bilirseniz, PHP'nin gücünün çok azını kullanmış olursunuz. Modern PHP'yi asıl güçlü kılan şeyler şunlardır:

  • Composer (Bağımlılık Yöneticisi): Modern PHP'nin kalbidir. Projenizin ihtiyaç duyduğu harici kütüphaneleri (örneğin, e-posta gönderme, PDF oluşturma) yönetmenizi sağlar. Projenizin kök dizininde composer.json adlı bir dosya oluşturup composer install komutunu çalıştırmanız yeterlidir.

  • OOP (Nesne Yönelimli Programlama): Kodunuzu daha modüler, yeniden kullanılabilir ve yönetilebilir hale getiren bir programlama paradigm_asıdır. Gerçek dünyadaki nesneleri (Araba, Kullanici, Siparis) kodda class (sınıf) olarak modellersiniz.

<?php
  class Kullanici {
    public $kullaniciAdi;
    public $email;

    public function __construct($kullaniciAdi, $email) {
      $this->kullaniciAdi = $kullaniciAdi;
      $this->email = $email;
    }

    public function bilgileriniGoster() {
      return "Kullanıcı Adı: " . $this->kullaniciAdi . ", Email: " . $this->email;
    }
  }

  // Sınıftan bir "nesne" (örnek) oluşturma
  $kullanici1 = new Kullanici("ali_yilmaz", "ali@example.com");
  echo $kullanici1->bilgileriniGoster();
?>

  • Framework'ler (Laravel, Symfony): Size hazır bir iskelet sunarak uygulama geliştirmeyi inanılmaz hızlandıran araçlardır. Veritabanı işlemleri, güvenlik, yönlendirme (routing) gibi tekrar eden görevleri sizin için hallederler. Sıfırdan bir araba motoru yapmak yerine, hazır ve güvenli bir şasi üzerine kendi arabanızı inşa etmek gibidir.

  • PSR Standartları: PHP topluluğu tarafından belirlenmiş kodlama standartlarıdır. Bu standartlara uymak (örneğin, PSR-12: Kodlama Stili), kodunuzun diğer geliştiriciler tarafından daha kolay okunmasını ve farklı kütüphanelerin birbiriyle uyumlu çalışmasını sağlar.

1.D. Pratik Bir Örnek: Basit Bir İletişim Formu

Teoriyi pratiğe dökelim.

1) form.html (HTML Arayüzü):

<!DOCTYPE html>
<html lang="tr">
<head>
    <meta charset="UTF-8">
    <title>İletişim Formu</title>
</head>
<body>
    <form action="gonder.php" method="POST">
        <label for="isim">Adınız:</label><br>
        <input type="text" id="isim" name="isim" required><br><br>
        
        <label for="email">Email Adresiniz:</label><br>
        <input type="email" id="email" name="email" required><br><br>
        
        <label for="mesaj">Mesajınız:</label><br>
        <textarea id="mesaj" name="mesaj" rows="4" required></textarea><br><br>
        
        <button type="submit">Gönder</button>
    </form>
</body>
</html>

2. gonder.php (PHP İşlem Kodları):

<?php
  // Sadece POST metodu ile gelen istekleri kabul et
  if ($_SERVER["REQUEST_METHOD"] == "POST") {
      
      // Form verilerini al ve güvenli hale getir
      // htmlspecialchars() fonksiyonu, XSS saldırılarını önlemek için kritiktir.
      $isim = htmlspecialchars($_POST['isim']);
      $email = htmlspecialchars($_POST['email']);
      $mesaj = htmlspecialchars($_POST['mesaj']);

      // Basit bir doğrulama
      if (empty($isim) || empty($email) || empty($mesaj)) {
          echo "Lütfen tüm alanları doldurun.";
      } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
          echo "Geçersiz bir e-posta adresi girdiniz.";
      } else {
          // Burada veritabanına kaydetme veya e-posta gönderme işlemleri yapılır.
          // Şimdilik sadece ekrana basalım.
          
          echo "<h1>Teşekkürler, " . $isim . "!</h1>";
          echo "<p>Mesajınız başarıyla alındı. Size en kısa sürede '" . $email . "' adresinden geri dönüş yapacağız.</p>";
          echo "<strong>Mesajınız:</strong><br><p>" . nl2br($mesaj) . "</p>"; // nl2br, satır atlamalarını <br> etiketine çevirir.
      }

  } else {
      // Form doğrudan çalıştırılırsa veya POST dışı bir metotla gelinirse
      echo "Bu sayfaya yalnızca form üzerinden erişilebilir.";
      header('Refresh: 3; URL=form.html'); // 3 saniye sonra forma yönlendir.
  }
?>

Adım 2: Alternatif Bakış Açıları ve Çözümler

  • Framework Kullanmak vs. Saf (Vanilla) PHP Yazmak: Küçük ve basit bir proje (ziyaretçi defteri, basit bir blog) için saf PHP yeterli olabilir. Ancak büyük, ölçeklenebilir ve güvenli bir uygulama (e-ticaret sitesi, sosyal medya platformu) geliştiriyorsanız, Laravel veya Symfony gibi bir framework kullanmak neredeyse bir zorunluluktur. Framework'ler size zaman kazandırır ve en iyi pratikleri uygulamanızı sağlar.

  • Prosedürel vs. Nesne Yönelimli (OOP): İlk örneklerimiz prosedüreldi (adım adım komutlar). İletişim formu örneği de büyük ölçüde prosedürel. Ancak Kullanici sınıfı örneği OOP idi. Küçük scriptler için prosedürel yaklaşım hızlıdır. Uygulamanız büyüdükçe, OOP yaklaşımı kodu organize etmeyi, hataları ayıklamayı ve yeni özellikler eklemeyi çok daha kolay hale getirir.

  • PHP'nin Alternatifleri: Web geliştirmek için tek seçenek PHP değildir.

    • Node.js (JavaScript): Gerçek zamanlı uygulamalar (sohbet uygulamaları, oyunlar) için harikadır. Ön yüzde (frontend) ve arka yüzde (backend) aynı dili (JavaScript) kullanma avantajı sunar.

    • Python (Django, Flask): Veri bilimi, yapay zeka ve makine öğrenmesi projeleriyle entegrasyonu çok güçlüdür. Django, Laravel gibi tam özellikli bir framework'tür.

    • Ruby (Ruby on Rails): Geliştirici mutluluğu ve hızlı prototipleme üzerine odaklanmış bir dildir.

PHP'nin en büyük avantajı, geniş barındırma (hosting) desteği, devasa topluluğu ve WordPress gibi içerik yönetim sistemleri sayesinde web'in büyük bir kısmına güç vermesidir.

Adım 3: Pratik Özet ve Eylem Planı

Modern bir PHP geliştiricisi olmak için izlemeniz gereken yol haritası:

  1. Kurulumu Yapın: Bilgisayarınıza XAMPP veya benzeri bir yerel sunucu kurun. php --version komutuyla PHP sürümünüzü kontrol edin.

  2. Temelleri Sağlamlaştırın: Değişkenler, döngüler, koşullar ve fonksiyonlar üzerinde bolca pratik yapın. $_GET, $_POST ve $_SESSION gibi süper global değişkenlerin ne işe yaradığını öğrenin.

  3. Composer'ı Keşfedin: Composer'ın ne olduğunu ve temel require, install, update komutlarını öğrenin. Bu, modern PHP'ye attığınız ilk adımdır.

  4. OOP Mantığını Kavrayın: class, object, property, method, inheritance gibi kavramların ne anlama geldiğini ve neden önemli olduğunu anlayın.

  5. Bir Framework Seçin ve Öğrenin: Yeni başlayanlar için genellikle Laravel önerilir. Dokümantasyonu harikadır ve topluluğu çok geniştir. Bir "To-Do List" (Yapılacaklar Listesi) uygulaması yaparak başlayın.

  6. Veritabanı ile Çalışın: SQL temellerini öğrenin. PHP'nin PDO (PHP Data Objects) eklentisi ile veritabanına nasıl güvenli bir şekilde bağlanacağınızı ve sorgu yapacağınızı öğrenin. Framework'ler bu süreci çok daha basitleştirir.

  7. Topluluğa Katılın: Stack Overflow, GitHub, Laracasts gibi platformlarda aktif olun. Başkalarının kodlarını okumak, öğrenmenin en iyi yollarından biridir.