Web Programlamanın Güçlü Silahı: PHP ve Temel Dil Yapısı
Rasmus Lerdorf tarafından ilk etapta kendi kişisel web sayfalarını yönetmek amacıyla geliştirilen ve açılımı "Personal Home Pages" (Kişisel Ana Sayfalar) olan PHP, günümüzde Hypertext Preprocessor olarak anılan, HTML içerisine gömülebilen (HTML-embedded) güçlü bir sunucu taraflı script dilidir. Özellikle dinamik ve "on the fly" (anlık/havada) üretilen web sayfalarını hızlı bir şekilde geliştirmek isteyen yazılımcılar için biçilmiş kaftandır.PHP'nin sentaksı (sözdizimi) geliştirilirken C, Java ve en çok da Perl dillerinden esinlenilmiştir. Bu dillerden herhangi birine aşinalığı olan bir geliştiricinin PHP'ye adapte olması son derece kolaydır.
PHP Nasıl Çalışır?
PHP, kendi yorumlayıcısı ile birlikte çalışan bir dildir. Süreç şu şekilde işler:- Kullanıcı tarayıcıdan bir sayfa talep eder.
- Web sunucusu, HTML kodları arasına yerleştirilmiş PHP kodlarını ayrıştırıp sunucuda işler.
- İşlem bittikten sonra kullanıcıya sadece saf HTML formatında bir çıktı gönderilir. Kullanıcı kaynak koduna baktığında arka plandaki PHP kodlarını asla göremez.
1. PHP Dilinin Yapısı ve Giriş Yöntemleri
PHP, HTML kodlarıyla aynı dosya içinde harmanlanarak kullanılabilir. Kod bloğunda HTML'den PHP'ye geçiş yapabilmek için belirli ayıraçlar (taglar) kullanılır.| Giriş Yöntemi | Kod Örneği | Açıklama |
| Standart PHP Etiketi | <?php ... ?> | En güvenli ve modern standart yöntemdir. |
| Kısa Etiket (Short Tag) | <? ... ?> | Sunucu konfigürasyonunda (short_open_tag) açık olmalıdır. |
| Script Etiketi | <script language="php"> ... </script> | Eski PHP versiyonlarında kalmıştır, modern PHP'de kullanılmaz. |
Örnek Tablo İçi Kullanım:
HTML
Kod:
<table size="500">
<tr>
<td><?php echo "Buraya PHP kodu yazılacak"; ?></td>
</tr>
</table>
İlk "Hello World" (Merhaba Dünya) Uygulamamız:
HTML
Kod:
<html>
<head>
<title>PHP İlk Uygulama - Example</title>
</head>
<body>
<?php echo "Hello World..."; ?>
</body>
</html>
Hello World...
2. Değişkenler ve Gelişmiş Değişken Özellikleri
PHP'de değişkenler, değer ile atama (assign by value) metoduyla çalışabildiği gibi adres ile atama (assign by reference) metodunu da destekler.- Referans Atama (
&): İşaretin önüne geldiği değişkenin değerini kopyalamaz; o değişkenin bellekteki adresini işleme dahil eder.
Değişken Tipleri ve Esneklik (Type Juggling & Casting)
| Özellik | Tanım | Örnek |
| Type Juggling | Çalışma anında değişken tipinin otomatik değişebilmesidir. | $sayi = "5"; (String) -> $sayi = $sayi + 2; (Integer olur) |
| Type Casting | Değişken değerinin bizim istediğimiz tipe zorlanmasıdır. | $yeni_veri = (int)$eski_veri; |
Dinamik Değişkenler (Variable Variables)
Adı dinamik olarak değişebilen değişkenler, programlamada muazzam bir esneklik sağlar. Karmaşık recursive (öz yinelemeli) yapıların önüne geçebilir.PHP
Kod:
$a = "hello";
$$a = "world"; // $hello değişkeni oluşturulur ve değeri "world" olur.
echo "$a ${$a}"; // Çıktı: hello world
3. Veri Akışı ve Önceden Tanımlı Değişkenler
Önceden Tanımlı (Global) Değişkenler
PHP, programcıya hazır küresel değişkenler sunar. Bunlar, sunucunun çevre değişkenleri, CGI değişkenleri ve HTTP istek detaylarıdır (Örn:$_SERVER, $_ENV). Bunların tam listesi phpinfo(); fonksiyonu ile görüntülenebilir. PHP'nin çalışma moduna göre (Modül veya CGI) bu değişkenlerin içeriği değişiklik gösterebilir.Kullanıcıdan Betiğe Gelen Değişkenler
PHP'nin en güçlü yönlerinden biri, formlardan veya URL'den gelen verileri ek bir parse (çözümleme) işlemine gerek duymadan doğrudan alabilmesidir.HTML Form Katı (
form.html):HTML
Kod:
<form action="islem.php" method="post">
Adınız: <input type="text" name="username"><br>
<input type="submit" name="submit" value="Tamam">
</form>
islem.php):PHP
Kod:
// Modern PHP standartlarında dışarıdan gelen POST verileri $_POST süper globali ile alınır:
$name = htmlspecialchars($_POST['username']);
echo "Adınız: " . $name;
4. Diziler (Arrays) ve Fonksiyonlar
PHP'de Dizilerin Yetenekleri
- Erişim Modelleri: Dizilere rastgele (random) erişim sağlanabildiği gibi sıradan (sequential) erişim ve kuyruk (queue) veri yapıları şeklinde de kullanılabilir.
- İlişkili (Associative) Diziler: Perl dilinde olduğu gibi anahtar-değer (
key => value) eşleşmeli diziler tanımlanabilir. Bu diziler üzerinde sırayla dönmek içinlist(),each()veya modernforeach()döngüleri kullanılır. - Dinamik Büyüme: Diziler çalışma anında dinamik olarak büyüyebilir ve indeks boyutları değiştirilebilir.
Uyadı: Büyük verilerle çalışırken bellek limitlerine dikkat edilmelidir; kontrolsüz döngüler sunucu kaynaklarını tüketebilir.
Fonksiyonların Gelişmiş Özellikleri
| Fonksiyon Özelliği | Açıklama |
| Recursive Calls | Fonksiyonların kendi kendilerini çağırması desteklenir. |
| Variable Functions | Adı dinamik olarak değişen fonksiyonlar çalıştırılabilir. |
| Static Değişkenler | Fonksiyon bittikten sonra bile içindeki değişken son değerini korur. |
| Varsayılan Parametre | Fonksiyon argümanlarına standart varsayılan değerler atanabilir. |
| Dinamik Parametre | Fonksiyonlar esnek ve değişen sayıda parametre kabul edebilir. |
Dinamik Kod ve Modülerlik
PHP'deeval() fonksiyonu kullanılarak string içerisindeki bir kod bloğu dinamik olarak yürütülebilir:PHP
Kod:
eval('echo "Merhaba Uydudoktoru Üyeleri";');
include veya require fonksiyonları kullanılır:PHP
Kod:
include 'header.php';
require 'config.php';
Son düzenleme: