Web dünyasının dinamik ve güçlü dillerinden biri olan PHP (Hypertext Preprocessor), yıllardır sunucu taraflı web geliştirmede lider konumda yer almaktadır. Basit bir kişisel web sitesinden karmaşık e-ticaret platformlarına, içerik yönetim sistemlerinden (CMS) sosyal medya uygulamalarına kadar geniş bir yelpazede kullanılabilen PHP, özellikle WordPress, Joomla ve Drupal gibi popüler platformların temelini oluşturur. Bu rehberde, PHP dünyasına adım atmak isteyenler için gerekli tüm temel bilgileri, kurulumdan ileri seviye konulara uzanan bir yol haritasıyla sunacağız. PHP öğrenmek, web geliştirme kariyerinizde size sağlam bir temel ve geniş fırsatlar sunacaktır.
PHP Nedir ve Neden Önemlidir?
PHP, genel amaçlı bir betik dilidir, ancak özellikle web geliştirmeye odaklanmıştır. Bir sunucu tarafı dil olduğu için, kullanıcıların tarayıcılarında çalışan JavaScript gibi istemci tarafı dillerden farklıdır. PHP kodu sunucuda çalışır ve çıktı olarak HTML, CSS veya JSON gibi formatlarda veri üretir. Bu çıktı daha sonra kullanıcının tarayıcısına gönderilir. PHP'nin bu esnek yapısı, onu dinamik web siteleri ve uygulamalar oluşturmak için ideal bir araç haline getirir. Açık kaynak kodlu olması, geniş bir topluluğa sahip olması ve sürekli gelişiyor olması da cabasıdır.
Gereksinimler ve Kurulum
PHP ile kod yazmaya başlamak için bir çalışma ortamına ihtiyacınız var. Bu ortam genellikle şunları içerir:
https://www.apachefriends.org/tr/index.html adresinden XAMPP'i veya http://www.wampserver.com/en/ adresinden WAMP'ı indirip kurduktan sonra, Apache ve MySQL servislerini başlatmanız gerekecektir. Kodlarınızı yerleştireceğiniz klasör genellikle XAMPP için `htdocs`, WAMP için `www` klasörüdür. Kod düzenleyici olarak Visual Studio Code (https://code.visualstudio.com/), Sublime Text veya PhpStorm gibi araçları kullanabilirsiniz. Özellikle VS Code, geniş eklenti desteği sayesinde PHP geliştirmesi için oldukça popülerdir.
Temel PHP Söz Dizimi
PHP kodları, HTML belgelerinin içine `<?php` ve `?>` etiketleri arasına yazılır. Bu etiketler, sunucuya bu bölgedeki kodun PHP olarak işlenmesi gerektiğini bildirir. En basit PHP kod örneği şöyledir:
PHP'de her ifadenin sonunda noktalı virgül (
kullanmak zorunludur. `echo` komutu, ekrana çıktı vermek için kullanılır.
Değişkenler ve Veri Tipleri
PHP'de değişkenler, verileri depolamak için kullanılır ve her zaman bir dolar işareti (`$`) ile başlar. PHP, değişkenin veri türünü otomatik olarak algılar (gevşek tipli bir dildir). Temel veri tipleri şunlardır:
Operatörler
PHP'de değişkenler üzerinde çeşitli işlemler yapmak için operatörler kullanılır:
Kontrol Yapıları: Karar Verme ve Döngüler
Programlamanın temelini oluşturan kontrol yapıları, kodunuzun akışını yönetmenizi sağlar.
Koşullu İfadeler (if, else, elseif, switch):
Döngüler (while, do-while, for, foreach):
Tekrarlayan görevleri otomatikleştirmek için kullanılırlar.
Fonksiyonlar
Tekrar eden kod bloklarını gruplamak ve yeniden kullanılabilir hale getirmek için fonksiyonlar kullanılır. PHP'de yüzlerce yerleşik fonksiyon bulunur, ancak kendi fonksiyonlarınızı da tanımlayabilirsiniz.
Diziler (Arrays)
Diziler, tek bir değişkende birden fazla değeri depolamak için kullanılır. PHP'de iki ana dizi türü vardır:
Form İşleme
Web uygulamalarının en kritik kısımlarından biri, kullanıcı girdilerini formlar aracılığıyla almaktır. PHP, `$_GET` ve `$_POST` süperglobal değişkenleri aracılığıyla bu verileri kolayca işleyebilir. `$_GET` verileri URL'de taşırken, `$_POST` verileri HTTP isteğinin gövdesinde taşır ve daha güvenlidir (özellikle hassas veriler için).
Veritabanı Bağlantısı (PDO ve MySQLi)
Dinamik web uygulamaları genellikle verileri depolamak için veritabanlarına ihtiyaç duyar. PHP, MySQL, PostgreSQL, SQLite gibi birçok veritabanı ile etkileşime geçebilir. En popüler iki yöntem MySQLi (MySQL Improved) ve PDO (PHP Data Objects) uzantılarıdır. PDO, farklı veritabanı sistemlerine tek bir arayüzle bağlanabilme avantajı sunar ve genellikle daha esnek ve güvenli kabul edilir.
Güvenlik Temelleri
PHP ile web uygulaması geliştirirken güvenlik en üst önceliğiniz olmalıdır. Başlıca tehditler ve korunma yolları:
Nesne Yönelimli Programlama (OOP) Temelleri
PHP, nesne yönelimli programlamayı (OOP) tam olarak destekler. OOP, karmaşık uygulamaları daha yönetilebilir, modüler ve yeniden kullanılabilir parçalara ayırmanıza yardımcı olur. Sınıflar, nesneler, miras, arayüzler ve trait'ler gibi kavramlar OOP'nin temelini oluşturur. Bir başlangıç rehberinde detaylarına girmek yerine, bu kavramların varlığını bilmek ve ileri seviyede derinlemesine incelemek önemlidir. OOP, büyük ölçekli PHP projelerinde standart yaklaşımdır.
PHP Çerçeveleri (Frameworks)
PHP'nin popülerliği, güçlü ve kapsamlı web geliştirme çerçevelerinin (frameworks) ortaya çıkmasına neden olmuştur. Çerçeveler, sık karşılaşılan görevleri kolaylaştıran (veritabanı etkileşimi, yönlendirme, kimlik doğrulama vb.) hazır bileşenler ve yapılar sunar. Bu, geliştirme sürecini hızlandırır, kod kalitesini artırır ve projenizin bakımını kolaylaştırır. En popüler PHP çerçevelerinden bazıları şunlardır:
Sonuç ve İleri Adımlar
Bu rehber, PHP dünyasına ilk adımınızı atmanız için kapsamlı bir temel sunmaktadır. Unutmayın ki programlama, sürekli öğrenme ve pratik yapma gerektiren bir alandır. Temel bilgileri edindikten sonra yapmanız gerekenler:
PHP Nedir ve Neden Önemlidir?
PHP, genel amaçlı bir betik dilidir, ancak özellikle web geliştirmeye odaklanmıştır. Bir sunucu tarafı dil olduğu için, kullanıcıların tarayıcılarında çalışan JavaScript gibi istemci tarafı dillerden farklıdır. PHP kodu sunucuda çalışır ve çıktı olarak HTML, CSS veya JSON gibi formatlarda veri üretir. Bu çıktı daha sonra kullanıcının tarayıcısına gönderilir. PHP'nin bu esnek yapısı, onu dinamik web siteleri ve uygulamalar oluşturmak için ideal bir araç haline getirir. Açık kaynak kodlu olması, geniş bir topluluğa sahip olması ve sürekli gelişiyor olması da cabasıdır.
Gereksinimler ve Kurulum
PHP ile kod yazmaya başlamak için bir çalışma ortamına ihtiyacınız var. Bu ortam genellikle şunları içerir:
- Bir Web Sunucusu: Genellikle Apache veya Nginx kullanılır.
- Bir Veritabanı: Çoğunlukla MySQL veya MariaDB tercih edilir.
- PHP Yorumlayıcısı: Kodunuzu çalıştıran ana bileşen.
- Bir Metin Düzenleyici/IDE: Kodunuzu yazmak için.
https://www.apachefriends.org/tr/index.html adresinden XAMPP'i veya http://www.wampserver.com/en/ adresinden WAMP'ı indirip kurduktan sonra, Apache ve MySQL servislerini başlatmanız gerekecektir. Kodlarınızı yerleştireceğiniz klasör genellikle XAMPP için `htdocs`, WAMP için `www` klasörüdür. Kod düzenleyici olarak Visual Studio Code (https://code.visualstudio.com/), Sublime Text veya PhpStorm gibi araçları kullanabilirsiniz. Özellikle VS Code, geniş eklenti desteği sayesinde PHP geliştirmesi için oldukça popülerdir.

Temel PHP Söz Dizimi
PHP kodları, HTML belgelerinin içine `<?php` ve `?>` etiketleri arasına yazılır. Bu etiketler, sunucuya bu bölgedeki kodun PHP olarak işlenmesi gerektiğini bildirir. En basit PHP kod örneği şöyledir:
Kod:
<?php
echo "Merhaba Dünya!"; // Bu, ekrana "Merhaba Dünya!" yazdırır.
/*
* Bu çok satırlı bir yorum örneğidir.
* Yorumlar, kodunuzu açıklamak için kullanılır ve PHP tarafından yürütülmez.
*/
?>
Değişkenler ve Veri Tipleri
PHP'de değişkenler, verileri depolamak için kullanılır ve her zaman bir dolar işareti (`$`) ile başlar. PHP, değişkenin veri türünü otomatik olarak algılar (gevşek tipli bir dildir). Temel veri tipleri şunlardır:
- String: Metin verileri (örneğin, `$isim = "Ahmet";`).
- Integer: Tam sayılar (örneğin, `$yas = 30;`).
- Float (Double): Ondalıklı sayılar (örneğin, `$fiyat = 19.99;`).
- Boolean: `true` veya `false` değerleri (örneğin, `$aktif = true;`).
- Array: Birden fazla değeri tek bir değişkende saklamak için (örneğin, `$meyveler = ["Elma", "Armut"];`).
- Object: Sınıfların örnekleri.
- NULL: Bir değişkenin hiçbir değere sahip olmadığını gösterir.
- Resource: Harici kaynaklara bağlantıları temsil eder (örneğin, veritabanı bağlantıları).
Kod:
<?php
$ad = "Mehmet"; // String
$soyad = "Yılmaz"; // String
$yas = 25; // Integer
$boy = 1.80; // Float
$medeniHal = true; // Boolean
echo "Ad: " . $ad . ", Soyad: " . $soyad . ", Yaş: " . $yas . ", Boy: " . $boy . ", Medeni Hal: " . ($medeniHal ? 'Evli' : 'Bekar') . ".";
?>
Operatörler
PHP'de değişkenler üzerinde çeşitli işlemler yapmak için operatörler kullanılır:
- Aritmetik Operatörler: `+`, `-`, `*`, `/`, `%` (modülüs), `**` (üssü).
- Atama Operatörleri: `=`, `+=`, `-=`, `*=`, `/=`, `%=`.
- Karşılaştırma Operatörleri: `==` (eşit mi), `!=` (eşit değil mi), `===` (hem değer hem tip eşit mi), `!==`, `<`, `>`, `<=`, `>=`.
- Mantıksal Operatörler: `&&` (ve), `||` (veya), `!` (değil).
- Artırma/Azaltma Operatörleri: `++` (artırma), `--` (azaltma).
Kontrol Yapıları: Karar Verme ve Döngüler
Programlamanın temelini oluşturan kontrol yapıları, kodunuzun akışını yönetmenizi sağlar.
Koşullu İfadeler (if, else, elseif, switch):
Kod:
<?php
$saat = date("H"); // Şu anki saati alır
if ($saat < 12) {
echo "Günaydın!";
} elseif ($saat < 18) {
echo "İyi günler!";
} else {
echo "İyi akşamlar!";
}
$renk = "mavi";
switch ($renk) {
case "kırmızı":
echo "Sevdiğiniz renk kırmızı.";
break;
case "mavi":
echo "Sevdiğiniz renk mavi.";
break;
default:
echo "Favori renk bulunamadı.";
}
?>
Döngüler (while, do-while, for, foreach):
Tekrarlayan görevleri otomatikleştirmek için kullanılırlar.
Kod:
<?php
// For döngüsü
for ($i = 1; $i <= 5; $i++) {
echo "Sayı: " . $i . "[br]";
}
// While döngüsü
$j = 1;
while ($j <= 3) {
echo "While döngüsü: " . $j . "[br]";
$j++;
}
// Foreach döngüsü (diziler için ideal)
$meyveler = ["Elma", "Armut", "Çilek", "Muz"];
echo "[b]En sevdiğim meyveler:[/b][list]";
foreach ($meyveler as $meyve) {
echo "[*]" . $meyve . "[br]";
}
echo "[/list]";
?>
Fonksiyonlar
Tekrar eden kod bloklarını gruplamak ve yeniden kullanılabilir hale getirmek için fonksiyonlar kullanılır. PHP'de yüzlerce yerleşik fonksiyon bulunur, ancak kendi fonksiyonlarınızı da tanımlayabilirsiniz.
Kod:
<?php
function selamVer($isim) {
return "Merhaba, " . $isim . "!";
}
echo selamVer("Ayşe"); // Çıktı: Merhaba, Ayşe!
echo selamVer("Deniz"); // Çıktı: Merhaba, Deniz!
function toplama($sayi1, $sayi2) {
return $sayi1 + $sayi2;
}
$sonuc = toplama(10, 5);
echo "Toplam: " . $sonuc; // Çıktı: Toplam: 15
?>
Diziler (Arrays)
Diziler, tek bir değişkende birden fazla değeri depolamak için kullanılır. PHP'de iki ana dizi türü vardır:
- Sayısal Diziler: Elemanlara sayısal indekslerle (0'dan başlayarak) erişilir.
- İlişkisel Diziler: Elemanlara adlandırılmış anahtarlarla erişilir.
Kod:
<?php
// Sayısal Dizi
$arabalar = array("Volvo", "BMW", "Toyota");
echo "İlk araba: " . $arabalar[0] . "[br]"; // Çıktı: İlk araba: Volvo
// İlişkisel Dizi
$yaslar = array("Ali" => "30", "Veli" => "25", "Ayşe" => "28");
echo "Ali'nin yaşı: " . $yaslar['Ali'] . "[br]"; // Çıktı: Ali'nin yaşı: 30
?>
Form İşleme
Web uygulamalarının en kritik kısımlarından biri, kullanıcı girdilerini formlar aracılığıyla almaktır. PHP, `$_GET` ve `$_POST` süperglobal değişkenleri aracılığıyla bu verileri kolayca işleyebilir. `$_GET` verileri URL'de taşırken, `$_POST` verileri HTTP isteğinin gövdesinde taşır ve daha güvenlidir (özellikle hassas veriler için).
Kod:
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$kullaniciAdi = $_POST['kullanici_adi'];
$parola = $_POST['parola'];
if (empty($kullaniciAdi) || empty($parola)) {
echo "Lütfen tüm alanları doldurun.";
} else {
echo "Merhaba, " . htmlspecialchars($kullaniciAdi) . "! Girişiniz başarılı.";
// Burada genellikle veritabanı kontrolü ve oturum başlatma yapılır.
}
} else {
// Formu göster
echo '<form method="post" action="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '">
Kullanıcı Adı: <input type="text" name="kullanici_adi"><br>
Parola: <input type="password" name="parola"><br>
<input type="submit" value="Giriş Yap">
</form>';
}
?>
Bu, özellikle form işlemede altın kuraldır."Kullanıcıdan gelen her veriye potansiyel bir tehdit olarak yaklaşın ve daima filtreleme, doğrulama ve sanitasyon işlemlerini uygulayın."
Veritabanı Bağlantısı (PDO ve MySQLi)
Dinamik web uygulamaları genellikle verileri depolamak için veritabanlarına ihtiyaç duyar. PHP, MySQL, PostgreSQL, SQLite gibi birçok veritabanı ile etkileşime geçebilir. En popüler iki yöntem MySQLi (MySQL Improved) ve PDO (PHP Data Objects) uzantılarıdır. PDO, farklı veritabanı sistemlerine tek bir arayüzle bağlanabilme avantajı sunar ve genellikle daha esnek ve güvenli kabul edilir.
Kod:
<?php
$dsn = 'mysql:host=localhost;dbname=testdb;charset=utf8mb4';
$username = 'root';
$password = '';
try {
$pdo = new PDO($dsn, $username, $password);
// Hata modunu ayarlama: Exception fırlatır
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Veritabanı bağlantısı başarılı![br]";
// Örnek bir sorgu çalıştırma
$stmt = $pdo->query("SELECT id, ad FROM kullanicilar");
echo "[b]Kullanıcı Listesi:[/b][list]";
while ($row = $stmt->fetch()) {
echo "[*]ID: " . $row['id'] . ", Ad: " . $row['ad'] . "[br]";
}
echo "[/list]";
} catch (PDOException $e) {
echo "Bağlantı veya sorgu hatası: " . $e->getMessage();
}
?>
Güvenlik Temelleri
PHP ile web uygulaması geliştirirken güvenlik en üst önceliğiniz olmalıdır. Başlıca tehditler ve korunma yolları:
- SQL Enjeksiyonu: Kullanıcıdan gelen verileri doğrudan SQL sorgularına katmaktan kaçının. Hazırlanmış ifadeler (Prepared Statements) kullanın (PDO ve MySQLi bunu destekler).
- XSS (Cross-Site Scripting): Kullanıcı girdilerini ekrana basmadan önce `htmlspecialchars()` veya `strip_tags()` gibi fonksiyonlarla temizleyin.
- CSRF (Cross-Site Request Forgery): Formlara gizli token'lar ekleyerek yetkisiz istekleri engelleyin.
- Şifre Hashing: Şifreleri asla düz metin olarak saklamayın. `password_hash()` ve `password_ify()` fonksiyonlarını kullanın.
- Otomatik Kötü Niyetli Yazılım Yüklemeleri: Dosya yükleme işlemlerinde dosya türü, boyutu ve içeriği gibi kontrolleri mutlaka yapın.
Nesne Yönelimli Programlama (OOP) Temelleri
PHP, nesne yönelimli programlamayı (OOP) tam olarak destekler. OOP, karmaşık uygulamaları daha yönetilebilir, modüler ve yeniden kullanılabilir parçalara ayırmanıza yardımcı olur. Sınıflar, nesneler, miras, arayüzler ve trait'ler gibi kavramlar OOP'nin temelini oluşturur. Bir başlangıç rehberinde detaylarına girmek yerine, bu kavramların varlığını bilmek ve ileri seviyede derinlemesine incelemek önemlidir. OOP, büyük ölçekli PHP projelerinde standart yaklaşımdır.
PHP Çerçeveleri (Frameworks)
PHP'nin popülerliği, güçlü ve kapsamlı web geliştirme çerçevelerinin (frameworks) ortaya çıkmasına neden olmuştur. Çerçeveler, sık karşılaşılan görevleri kolaylaştıran (veritabanı etkileşimi, yönlendirme, kimlik doğrulama vb.) hazır bileşenler ve yapılar sunar. Bu, geliştirme sürecini hızlandırır, kod kalitesini artırır ve projenizin bakımını kolaylaştırır. En popüler PHP çerçevelerinden bazıları şunlardır:
- Laravel: Modern, güçlü ve geniş bir topluluğa sahip en popüler PHP çerçevesi.
- Symfony: Kurumsal düzeyde uygulamalar için güçlü ve modüler bir çerçeve.
- CodeIgniter: Hafif, hızlı ve öğrenmesi kolay bir çerçeve.
- Yii: Yüksek performanslı web uygulamaları geliştirmek için uygun bir çerçeve.
- Zend Framework (Laminas): Büyük ölçekli kurumsal uygulamalar için tasarlanmış esnek bir yapı.
Sonuç ve İleri Adımlar
Bu rehber, PHP dünyasına ilk adımınızı atmanız için kapsamlı bir temel sunmaktadır. Unutmayın ki programlama, sürekli öğrenme ve pratik yapma gerektiren bir alandır. Temel bilgileri edindikten sonra yapmanız gerekenler:
- Bol Bol Pratik Yapın: Küçük projeler geliştirin, öğrendiklerinizi uygulayın.
- Hata Ayıklama (Debugging) Yeteneklerinizi Geliştirin: Hataları bulma ve düzeltme becerisi çok önemlidir.
- Versiyon Kontrol Sistemlerini Öğrenin: Git ve GitHub, kodunuzu yönetmek ve işbirliği yapmak için vazgeçilmezdir.
- Topluluklara Katılın: Forumlarda, Stack Overflow gibi platformlarda sorular sorun, cevaplar arayın.
- Bir Çerçeve Öğrenin: Laravel veya Symfony gibi popüler bir çerçeveye odaklanın.
- Veritabanı Bilginizi Derinleştirin: SQL sorguları ve veritabanı tasarımı hakkında daha fazla bilgi edinin.
- Güvenlik Konusunda Bilgilenin: Web güvenliği sürekli gelişen bir alandır, güncel kalın.