June 10, 2025 Onur Ülkügder
PHP, web geliştirme dünyasının temel taşlarından biridir ve dinamik web siteleri oluşturmak için yaygın olarak kullanılır. PHP'nin gücünün merkezinde ise değişkenler yatar. Bu yazıda, PHP değişkenlerinin ne olduğunu, nasıl çalıştığını, farklı türlerini ve en iyi uygulamalarını derinlemesine inceleyeceğiz. Amacımız, hem yeni başlayanların temel kavramları anlamasına yardımcı olmak, hem de deneyimli geliştiricilere yeni bakış açıları sunmaktır.
Bir değişken, programlama dünyasında bir değeri saklamak için kullanılan bir "etikettir". Bu etiket, bilgisayarın belleğinde belirli bir konumu işaret eder. Değişkenler, verileri geçici olarak saklamak, işlemek ve yeniden kullanmak için kullanılır. Günlük hayattan bir örnek vermek gerekirse, bir kutuyu düşünebilirsiniz. Kutunun üzerine bir etiket yapıştırırsınız ve bu etiket, kutunun içeriğini tanımlar. PHP'deki değişkenler de benzer şekilde çalışır.
Değişkenler, programlamanın temel bir parçasıdır çünkü:
PHP'de değişkenler, web sayfalarını dinamik hale getirmenin anahtarıdır. Örneğin, bir kullanıcıdan alınan veriyi saklamak, bir veritabanından alınan bilgileri görüntülemek veya bir hesaplama sonucunu göstermek için değişkenler kullanılır.
PHP'de bir değişken tanımlamak oldukça basittir. Değişken adının önüne bir $ işareti koymanız yeterlidir. İşte temel sözdizimi:
$degisken_adi = deger;
Örneğin:
$isim = "Ahmet";
$yas = 30;
$fiyat = 99.99;
Bu örneklerde:
$isim adlı bir değişken tanımlanmış ve değeri "Ahmet" olarak atanmıştır. Bu bir string (metin) türündeki değişkendir.$yas adlı bir değişken tanımlanmış ve değeri 30 olarak atanmıştır. Bu bir integer (tam sayı) türündeki değişkendir.$fiyat adlı bir değişken tanımlanmış ve değeri 99.99 olarak atanmıştır. Bu bir float (ondalıklı sayı) türündeki değişkendir.PHP, zayıf tipli bir dildir. Bu, bir değişkeni tanımlarken türünü belirtmenize gerek olmadığı anlamına gelir. PHP, değişkene atanan değere göre türünü otomatik olarak belirler. Bu, geliştirme sürecini hızlandırır, ancak aynı zamanda dikkatli olunması gereken potansiyel hatalara da yol açabilir.
Bir değişkeni kullandıktan sonra, unset() fonksiyonunu kullanarak bellekteki yerini serbest bırakabilirsiniz:
unset($isim);
Bu işlem, $isim değişkenini ortadan kaldırır ve artık kullanılamaz hale getirir.
PHP'de değişken adları belirli kurallara uymalıdır:
$ işareti ile başlamalıdır._) ile başlamalıdır.$isim ve $Isim farklı değişkenlerdir).if, else, while, function) değişken adı olarak kullanılamaz.İyi bir programlama pratiği olarak, değişken adlarının anlamlı ve açıklayıcı olması önemlidir. Örneğin, bir kullanıcının adını saklamak için $kullaniciAdi gibi bir değişken adı kullanmak, $x veya $var1 gibi genel adlardan çok daha iyidir.
Bir değişkene değer atamak için = (eşittir) operatörü kullanılır. Bu operatör, sağdaki değeri soldaki değişkene atar. PHP'de farklı atama türleri vardır:
Basit Atama Örneği:
$a = 10;
$b = $a; // $b'ye $a'nın değeri kopyalanır
$b = 20; // $b'nin değeri değişir, $a etkilenmez
echo $a; // Çıktı: 10
echo $b; // Çıktı: 20
Referans ile Atama Örneği:
$a = 10;
$b = &$a; // $b, $a'nın referansını alır
$b = 20; // $b'nin değeri değişir, $a da etkilenir
echo $a; // Çıktı: 20
echo $b; // Çıktı: 20
Referans ile atama, büyük veri yapılarını kopyalamak yerine, aynı veriye erişmeyi sağlar. Bu, performansı artırabilir, ancak aynı zamanda beklenmedik sonuçlara yol açabileceği için dikkatli kullanılmalıdır.
PHP'de değişkenler farklı veri türlerini saklayabilir. Başlıca veri türleri şunlardır:
true (doğru) veya false (yanlış) değerlerini alır.PHP'de bir değişkenin türünü öğrenmek için gettype() fonksiyonu kullanılabilir:
$sayi = 10;
echo gettype($sayi); // Çıktı: integer
$metin = "Merhaba";
echo gettype($metin); // Çıktı: string
PHP, veri türlerini otomatik olarak dönüştürebilir (type juggling). Örneğin, bir string ve bir integer'ı toplarsanız, PHP string'i sayıya dönüştürmeye çalışır:
$sayi = 10;
$metin = "20";
$toplam = $sayi $metin; // $metin, 20 sayısına dönüştürülür
echo $toplam; // Çıktı: 30
Bu otomatik dönüşüm, kolaylık sağlar, ancak bazen beklenmedik sonuçlara yol açabilir. Bu nedenle, veri türlerini dikkatli bir şekilde yönetmek önemlidir.
Integer veri türü, ondalıklı kısmı olmayan tam sayıları temsil eder. PHP'de integer'lar pozitif, negatif veya sıfır olabilir.
Örnekler:
$sayi1 = 10;
$sayi2 = -5;
$sayi3 = 0;
PHP'de integer'ların boyut aralığı, platforma bağlı olarak değişir. Genellikle 32 bit veya 64 bit olabilirler. Integer'ların maksimum ve minimum değerlerini öğrenmek için PHP_INT_MAX ve PHP_INT_MIN sabitlerini kullanabilirsiniz:
echo PHP_INT_MAX; // Çıktı: Platforma bağlı olarak değişir (örneğin, 2147483647)
echo PHP_INT_MIN; // Çıktı: Platforma bağlı olarak değişir (örneğin, -2147483648)
Eğer bir integer, maksimum değerini aşarsa, otomatik olarak float veri türüne dönüştürülür (integer overflow).
Float veri türü, ondalıklı kısmı olan sayıları temsil eder. Float'lar, bilimsel gösterim (örneğin, 1.234E 5) veya normal ondalıklı gösterim (örneğin, 3.14) ile ifade edilebilir.
Örnekler:
$sayi1 = 3.14;
$sayi2 = -2.5;
$sayi3 = 0.0;
$sayi4 = 1.234E 5; // 123400
Float'ların doğruluğu sınırlıdır. Bilgisayarlar, ondalıklı sayıları tam olarak temsil etmekte zorlanabilirler. Bu nedenle, float'larla yapılan karşılaştırmalarda dikkatli olmak gerekir.
Örneğin:
$a = 0.1 0.2;
$b = 0.3;
if ($a == $b) {
echo "Eşit";
} else {
echo "Eşit Değil"; // Bu çıktı verilir
}
Bu sorunu çözmek için, sayıları belirli bir hassasiyetle yuvarlamak veya aralık kontrolü yapmak gerekebilir:
$a = 0.1 0.2;
$b = 0.3;
$epsilon = 0.00001; // Kabul edilebilir hata payı
if (abs($a - $b) < $epsilon) {
echo "Eşit"; // Bu çıktı verilir
} else {
echo "Eşit Değil";
}
String veri türü, karakter dizilerini temsil eder. PHP'de string'ler tek tırnak (') veya çift tırnak (") içinde tanımlanabilir.
Tek Tırnak:
$metin = 'Merhaba Dünya';
Tek tırnak içindeki string'ler, değişkenleri veya özel karakterleri (\n, \t vb.) yorumlamaz. Yani, string aynen olduğu gibi kullanılır.
Çift Tırnak:
$metin = "Merhaba Dünya";
Çift tırnak içindeki string'ler, değişkenleri ve özel karakterleri yorumlar. Bu, string içinde değişkenlerin değerlerini kullanmayı veya yeni satır, sekme gibi özel karakterler eklemeyi mümkün kılar.
Örnek:
$isim = "Ahmet";
$metin = "Merhaba, $isim!"; // Değişken yorumlanır
echo $metin; // Çıktı: Merhaba, Ahmet!
$yeniSatir = "İlk Satır\nİkinci Satır"; // Özel karakter yorumlanır
echo $yeniSatir;
// Çıktı:
// İlk Satır
// İkinci Satır
String'leri birleştirmek için . (nokta) operatörü kullanılır:
$ad = "Ahmet";
$soyad = "Yılmaz";
$tamAd = $ad . " " . $soyad; // String'ler birleştirilir
echo $tamAd; // Çıktı: Ahmet Yılmaz
PHP'de string'lerle ilgili birçok kullanışlı fonksiyon bulunur (örneğin, strlen(), strpos(), substr(), str_replace()). Bu fonksiyonlar, string'leri işlemek, aramak, değiştirmek ve parçalamak için kullanılır.
Boolean veri türü, true (doğru) veya false (yanlış) değerlerini alır. Boolean'lar, koşullu ifadelerde (if, else, while) ve mantıksal işlemlerde (&&, ||, !) kullanılır.
Örnekler:
$dogru = true;
$yanlis = false;
if ($dogru) {
echo "Doğru"; // Bu çıktı verilir
} else {
echo "Yanlış";
}
PHP'de bazı değerler otomatik olarak boolean'a dönüştürülebilir:
0 (sıfır), 0.0, "" (boş string), NULL ve boş dizi (array()) false olarak değerlendirilir.true olarak değerlendirilir.Örnek:
$sayi = 0;
if ($sayi) {
echo "Doğru";
} else {
echo "Yanlış"; // Bu çıktı verilir
}
Array veri türü, birden fazla değeri tek bir değişkende saklamak için kullanılır. Diziler, index'lenmiş (sayısal) veya ilişkisel (anahtar-değer) olabilir.
Index'lenmiş Dizi:
$meyveler = array("Elma", "Armut", "Muz");
echo $meyveler[0]; // Çıktı: Elma
echo $meyveler[1]; // Çıktı: Armut
echo $meyveler[2]; // Çıktı: Muz
İlişkisel Dizi:
$kisi = array(
"ad" => "Ahmet",
"soyad" => "Yılmaz",
"yas" => 30
);
echo $kisi["ad"]; // Çıktı: Ahmet
echo $kisi["soyad"]; // Çıktı: Yılmaz
echo $kisi["yas"]; // Çıktı: 30
PHP'de dizi oluşturmanın farklı yolları vardır:
// array() fonksiyonu ile
$dizi1 = array("Elma", "Armut");
// Kısa dizi sözdizimi (PHP 5.4 ve sonrası)
$dizi2 = ["Elma", "Armut"];
Dizilere eleman eklemek için [] operatörü veya array_push() fonksiyonu kullanılabilir:
$meyveler = ["Elma", "Armut"];
$meyveler[] = "Muz"; // Eleman eklenir
array_push($meyveler, "Çilek"); // Eleman eklenir
print_r($meyveler); // Dizinin içeriği görüntülenir
// Çıktı: Array ( [0] => Elma [1] => Armut [2] => Muz [3] => Çilek )
Diziler üzerinde döngülerle (for, foreach) işlem yapılabilir:
$meyveler = ["Elma", "Armut", "Muz"];
foreach ($meyveler as $meyve) {
echo $meyve . " "; // Çıktı: Elma Armut Muz
}
PHP'de dizilerle ilgili birçok kullanışlı fonksiyon bulunur (örneğin, count(), sort(), array_merge(), array_pop()). Bu fonksiyonlar, dizileri işlemek, sıralamak, birleştirmek ve eleman eklemek/çıkarmak için kullanılır.
Object veri türü, sınıfların örnekleridir. Nesneler, veri (özellikler) ve fonksiyonları (metotlar) bir arada barındırır.
Örnek:
class Araba {
public $marka;
public $model;
public function __construct($marka, $model) {
$this->marka = $marka;
$this->model = $model;
}
public function bilgileriGoster() {
echo "Marka: " . $this->marka . ", Model: " . $this->model;
}
}
$araba1 = new Araba("BMW", "320i"); // Nesne oluşturulur
$araba1->bilgileriGoster(); // Metot çağrılır
// Çıktı: Marka: BMW, Model: 320i
Bu örnekte, Araba adlı bir sınıf tanımlanmıştır. Sınıfın $marka ve $model adında iki özelliği ve __construct() (yapıcı metot) ve bilgileriGoster() adında iki metodu vardır. $araba1 adlı bir nesne oluşturulmuş ve nesnenin metodu çağrılarak bilgileri görüntülenmiştir.
Nesneler, nesne yönelimli programlamanın (OOP) temelini oluşturur ve karmaşık uygulamaları modüler ve yönetilebilir hale getirmek için kullanılır.
NULL, bir değişkenin hiçbir değeri olmadığını belirtir. Bir değişkene NULL değeri atayarak veya unset() fonksiyonunu kullanarak değişkeni NULL yapabilirsiniz.
Örnekler:
$degisken = NULL;
if (is_null($degisken)) {
echo "Değişken NULL"; // Bu çıktı verilir
}
NULL, genellikle bir değişkenin henüz bir değere sahip olmadığını veya bir işlemin başarısız olduğunu belirtmek için kullanılır.
Resource veri türü, harici kaynaklara (örneğin, veritabanı bağlantıları, dosya tutamaçları, resimler) referansları saklar. Resource'lar, doğrudan manipüle edilemez, sadece kaynaklara erişmek için kullanılır.
Örnek:
$dosya = fopen("dosya.txt", "r"); // Dosya açılır (kaynak oluşturulur)
if ($dosya) {
// Dosya işlemleri yapılır
fclose($dosya); // Dosya kapatılır (kaynak serbest bırakılır)
}
Resource'lar, genellikle PHP'nin dahili fonksiyonları tarafından döndürülür ve kaynaklara erişmek ve yönetmek için kullanılır. Kullanılmayan resource'lar, bellek sızıntılarına yol açmamak için mutlaka serbest bırakılmalıdır (örneğin, fclose() ile dosya kapatılmalı, mysqli_close() ile veritabanı bağlantısı kesilmelidir).
Değişken kapsamı, bir değişkenin programın hangi bölümünde erişilebilir olduğunu belirler. PHP'de dört farklı değişken kapsamı vardır:
Bir fonksiyon içinde tanımlanan değişkenler, sadece o fonksiyon içinde erişilebilirdir. Fonksiyon dışında bu değişkenlere erişilemez.
function ornekFonksiyon() {
$yerelDegisken = "Yerel Değer";
echo $yerelDegisken; // Çıktı: Yerel Değer
}
ornekFonksiyon();
// echo $yerelDegisken; // Hata: Tanımsız değişken
Bir fonksiyon dışında tanımlanan değişkenler, global kapsamdadır. Ancak, fonksiyon içinde doğrudan erişilemezler. Bir fonksiyon içinde global bir değişkene erişmek için global anahtar kelimesi kullanılmalıdır.
$globalDegisken = "Global Değer";
function ornekFonksiyon() {
global $globalDegisken;
echo $globalDegisken; // Çıktı: Global Değer
}
ornekFonksiyon();
echo $globalDegisken; // Çıktı: Global Değer
Alternatif olarak, $GLOBALS dizisi kullanılarak da global değişkenlere erişilebilir:
$globalDegisken = "Global Değer";
function ornekFonksiyon() {
echo $GLOBALS['globalDegisken']; // Çıktı: Global Değer
}
ornekFonksiyon();
Global değişkenlerin aşırı kullanımı, kodun okunabilirliğini ve yönetilebilirliğini azaltabilir. Mümkün olduğunca global değişkenlerden kaçınmak ve fonksiyonlara parametreler aracılığıyla veri geçirmek daha iyi bir yaklaşımdır.
Bir fonksiyon içinde tanımlanan statik değişkenler, fonksiyon her çağrıldığında değerini korur. Yani, fonksiyon ilk kez çağrıldığında değişkene bir değer atanır ve sonraki çağrılarda bu değer korunur.
function sayac() {
static $sayi = 0;
$sayi ;
echo $sayi . " ";
}
sayac(); // Çıktı: 1
sayac(); // Çıktı: 2
sayac(); // Çıktı: 3
Statik değişkenler, fonksiyonlar arasında durumu korumak veya bir fonksiyonun kaç kez çağrıldığını takip etmek gibi durumlarda kullanışlıdır.
Bir fonksiyona argüman olarak geçirilen değişkenlerdir. Parametreler, fonksiyon içinde yerel değişkenler gibi davranır.
function toplama($a, $b) {
$toplam = $a $b;
echo $toplam;
}
toplama(5, 3); // Çıktı: 8
Bu örnekte, $a ve $b parametreleri, toplama() fonksiyonuna geçirilen argümanlardır. Fonksiyon içinde bu parametreler kullanılarak toplama işlemi yapılır.
PHP'de otomatik olarak kullanılabilen ve farklı kapsamlar arasında erişilebilen bazı özel değişkenler vardır. Bunlara superglobals denir. Başlıca superglobal değişkenler şunlardır:
$GLOBALS: Tüm global değişkenleri içeren bir dizi.$_SERVER: Sunucu ve yürütme ortamı hakkında bilgi içeren bir dizi.$_GET: URL parametreleri ile gönderilen verileri içeren bir dizi.$_POST: HTTP POST metodu ile gönderilen verileri içeren bir dizi.$_FILES: Dosya yükleme işlemleri sırasında yüklenen dosyalar hakkında bilgi içeren bir dizi.$_COOKIE: HTTP çerezleri ile saklanan verileri içeren bir dizi.$_SESSION: Oturum (session) verilerini saklamak için kullanılan bir dizi.$_REQUEST: $_GET, $_POST ve $_COOKIE değişkenlerini birleştiren bir dizi (kullanımı önerilmez).$_ENV: Ortam değişkenlerini içeren bir dizi.Superglobal değişkenler, form verilerini işlemek, oturumları yönetmek, sunucu bilgilerine erişmek ve HTTP çerezlerini kullanmak gibi birçok yaygın web geliştirme görevini kolaylaştırır.
$_GET değişkeni, URL parametreleri ile gönderilen verileri içeren bir dizidir. URL parametreleri, soru işareti (?) ile başlayan ve anahtar-değer çiftlerinden oluşan bir string'dir.
Örnek:
http://www.example.com/arama.php?q=PHP&s=kitap
Bu URL'de iki parametre vardır: q (değeri "PHP") ve s (değeri "kitap"). Bu parametrelere $_GET dizisi üzerinden erişilebilir:
$aramaTerimi = $_GET['q'];
$aramaTuru = $_GET['s'];
echo "Arama Terimi: " . $aramaTerimi . ", Arama Türü: " . $aramaTuru;
// Çıktı: Arama Terimi: PHP, Arama Türü: kitap
$_GET değişkeni, genellikle arama formları, sayfalama ve basit veri gönderme işlemleri için kullanılır. Ancak, hassas verileri (örneğin, şifreler) $_GET ile göndermek güvenli değildir, çünkü URL'de açıkça görünürler.
$_POST değişkeni, HTTP POST metodu ile gönderilen verileri içeren bir dizidir. POST metodu, form verilerini sunucuya gizli bir şekilde göndermek için kullanılır.
Örnek:
Bu form, isim ve email alanlarını içerir. Form gönderildiğinde, bu alanlardaki veriler kaydet.php sayfasına POST metodu ile gönderilir. kaydet.php sayfasında bu verilere $_POST dizisi üzerinden erişilebilir:
$isim = $_POST['isim'];
$email = $_POST['email'];
echo "İsim: " . $isim . ", E-posta: " . $email;
// Çıktı: İsim: Formdan girilen isim, E-posta: Formdan girilen e-posta
$_POST değişkeni, genellikle kullanıcı kayıt formları, giriş formları ve büyük miktarda veri gönderme işlemleri için kullanılır. $_GET'e göre daha güvenlidir, çünkü veriler URL'de görünmez.
$_SESSION değişkeni, oturum (session) verilerini saklamak için kullanılan bir dizidir. Oturumlar, kullanıcıların web sitesi üzerindeki etkileşimlerini takip etmek için kullanılır.
Bir oturum başlatmak için session_start() fonksiyonu kullanılmalıdır:
session_start();
Oturum verileri, $_SESSION dizisine atanarak saklanabilir:
$_SESSION['kullanici_adi'] = "Ahmet";
$_SESSION['email'] = "[email protected]";
Oturum verilerine daha sonra aynı veya farklı sayfalarda erişilebilir:
session_start(); // Oturum başlatılır
echo "Kullanıcı Adı: " . $_SESSION['kullanici_adi'] . ", E-posta: " . $_SESSION['email'];
// Çıktı: Kullanıcı Adı: Ahmet, E-posta: [email protected]
Oturumu sonlandırmak için session_destroy() fonksiyonu kullanılabilir:
session_start();
session_destroy();
$_SESSION değişkeni, kullanıcı giriş durumunu takip etmek, alışveriş sepeti bilgilerini saklamak ve kullanıcıya özel içerik görüntülemek gibi birçok yaygın web geliştirme görevini kolaylaştırır.
PHP'de değişkenleri kullanırken güvenlik önlemleri almak, web sitenizin güvenliğini sağlamak için kritik öneme sahiptir. İşte dikkat edilmesi gereken bazı önemli noktalar:
mysqli_real_escape_string()) kullanarak SQL injection saldırılarını önleyin.htmlspecialchars() fonksiyonunu kullanarak HTML etiketlerini etkisiz hale getirin. Bu, XSS saldırılarını önler.
Bootstrap 5 ile Web Geliştirmeye Hızlı Bir Başlangıç
June 23, 2025 Bootstrap 5 ile Web Geliştirmeye Hızlı Bir Başlangıç Devamını oku »
PHP Değişkenleri: Derinlemesine Bir Bakış
June 10, 2025 PHP Değişkenleri: Derinlemesine Bir Bakış Devamını oku »
PHP Yorumları: Kodun Anlamını Açıklamak ve İyi Bir Uygulama Geliştirmek
June 3, 2025 PHP Yorumları: Kodun Anlamını Açıklamak ve İyi Bir Uygulama Geliştirmek Devamını oku »
PHP Kurulumu: Derinlemesine Bir Rehber
May 28, 2025 PHP Kurulumu: Derinlemesine Bir Rehber Devamını oku »
PHP'ye Giriş: Web Geliştirmenin Dinamosu
May 27, 2025 PHP'ye Giriş: Web Geliştirmenin Dinamosu Devamını oku »
Eskişehir'in Kalbi: Osmangazi Üniversitesi
May 26, 2022 Eskişehir'in Kalbi: Osmangazi Üniversitesi Devamını oku »
Anadolu Üniversitesi: Türkiye'nin Öncü Eğitim Kurumu
May 26, 2020 Anadolu Üniversitesi: Türkiye'nin Öncü Eğitim Kurumu Devamını oku »