PHP'de Değişkenler ve Tipler: Kodunuzu Anlamanın Temelleri
PHP, web geliştirme dünyasının en güçlü ve esnek dillerinden biridir. Bu esnekliğin temelinde, verileri depolama ve işleme şeklimizi belirleyen değişkenler ve veri tipleri yatar. Bu makalede, PHP'deki değişkenlerin ne olduğunu, nasıl tanımlandıklarını ve hangi veri tiplerini desteklediğini ayrıntılı bir şekilde inceleyeceğiz. Ayrıca, PHP'nin tip esnekliği ve modern PHP'deki tip güvenliği yaklaşımlarına da değineceğiz.
Değişken Nedir?
En basit tanımıyla, bir değişken, bilgisayar belleğinde bir veri parçasını saklamak için kullanılan bir "kutudur". Bu kutunun içine sayıları, metinleri, listeleri veya daha karmaşık yapıları koyabilirsiniz. PHP'de bir değişkenin değeri programın yürütülmesi sırasında değiştirilebilir, bu da onları dinamik ve etkileşimli uygulamalar oluşturmak için vazgeçilmez kılar.
PHP'de Değişken Tanımlama
PHP'de değişkenler her zaman bir dolar işareti ($) ile başlar. Dolar işaretinden sonra bir harf veya alt çizgi (_) gelmeli, ardından harfler, rakamlar veya alt çizgiler gelebilir. PHP'deki değişken isimleri büyük/küçük harf duyarlıdır.
Değişkenlere değer atamak için atama operatörü (=) kullanılır. PHP, bir değişkene ilk değer atandığında onun tipini otomatik olarak belirler. Bu, PHP'yi dinamik olarak tiplendirilmiş bir dil yapar.
PHP Veri Tipleri
PHP, birçok farklı veri tipini destekler. Bu tipler, verinin ne tür bir bilgi olduğunu ve nasıl depolandığını veya işlendiğini belirler. Temel olarak dört ana kategoriye ayrılabilirler:
1. Scalar (Tekil) Tipler:
Bu tipler, yalnızca bir değer tutabilen basit veri tipleridir.
a. String (Metin Dizisi)
Metin dizileri, harfler, sayılar ve sembollerden oluşan karakter dizileridir. Tek tırnak veya çift tırnak içinde tanımlanabilirler. Çift tırnak içinde değişkenler ayrıştırılır (interpolasyon), tek tırnak içinde ayrıştırılmaz.
b. Integer (Tam Sayı)
Tam sayılar, ondalık veya kesirli kısmı olmayan sayılardır (pozitif, negatif veya sıfır).
c. Float (Kayan Noktalı Sayı) / Double
Ondalık veya kesirli kısmı olan sayılardır. PHP'de genellikle "float" veya "double" olarak anılırlar, temelde aynıdırlar.
d. Boolean (Mantıksal)
Sadece iki olası değeri vardır: true (doğru) veya false (yanlış). Genellikle koşullu ifadelerde kullanılırlar.
2. Compound (Bileşik) Tipler:
Birden fazla değeri veya karmaşık yapıları tutabilen tiplerdir.
a. Array (Dizi)
Diziler, tek bir değişken altında birden fazla değeri depolamak için kullanılır. İndeksli (sayısal anahtarlı) veya ilişkisel (metin anahtarlı) olabilirler.
b. Object (Nesne)
Nesneler, veri (özellikler) ve bu veriler üzerinde işlem yapabilen işlevleri (metotlar) bir araya getiren yapılardır. Nesne yönelimli programlamanın (OOP) temelidirler.
3. Special (Özel) Tipler:
Bunlar, özel durumları veya kaynakları temsil eden tiplerdir.
a. NULL
NULL, bir değişkenin hiçbir değer taşımadığını gösteren özel bir tiptir. Bir değişken:
b. Resource (Kaynak)
Kaynak tipi değişkenler, dış kaynaklara (veritabanı bağlantıları, dosya işlemleri, resimler vb.) bir referans tutar. Genellikle bu kaynaklar otomatik olarak kapatılır, ancak fclose() gibi fonksiyonlarla manuel olarak da kapatılabilirler.
PHP'nin Tip Esnekliği ve Otomatik Tip Dönüşümü (Type Juggling)
PHP, gevşek tipli bir dildir, yani bir değişkenin tipi, içerdiği değere göre otomatik olarak değişebilir. Bu, bazen kod yazmayı kolaylaştırsa da, beklenmedik tip dönüşümlerine yol açarak hatalara neden olabilir.
Bir değişkenin tipini öğrenmek için gettype() fonksiyonu veya daha detaylı bilgi için var_dump() fonksiyonu kullanılabilir.
Tip Belirtme (Type Hinting) ve Tip Bildirimleri (Type Declarations) - Modern PHP
PHP 7 ve sonraki sürümlerle birlikte, fonksiyon parametrelerinde, dönüş değerlerinde ve sınıf özelliklerinde tip belirtme (type hinting) özelliği gelmiştir. Bu, kodun daha okunabilir, bakımı daha kolay olmasını sağlar ve hataları derleme/çalışma zamanında yakalamaya yardımcı olur.
Değişken Kapsamı (Variable Scope)
Değişkenin programın hangi bölümünden erişilebildiğini belirler. PHP'de başlıca üç kapsam türü vardır:
Bu görsel, PHP'deki değişken kapsamlarını şematik olarak göstermektedir. (Gerçek bir görsel URL'si kullanmanız önerilir.)
Sonuç
PHP'deki değişkenler ve veri tipleri, her PHP geliştiricisinin sağlam bir temel oluşturması için anlaması gereken kritik kavramlardır. PHP'nin dinamik yapısı esneklik sunarken, PHP 7 ve sonraki sürümlerle gelen tip bildirimleri, daha güçlü ve hatasız uygulamalar yazmamıza olanak tanır. Kodunuzu yazarken değişkenlerin nasıl davrandığını ve hangi tipte veriyi tuttuklarını anlamak, performanslı ve bakımı kolay kod yazmanın anahtarıdır. Unutmayın, iyi bir programcı sadece kodu yazan değil, aynı zamanda kodu anlayan ve optimize edendir.
PHP Resmi Dökümantasyon: Değişkenler
PHP Resmi Dökümantasyon: Tipler
PHP, web geliştirme dünyasının en güçlü ve esnek dillerinden biridir. Bu esnekliğin temelinde, verileri depolama ve işleme şeklimizi belirleyen değişkenler ve veri tipleri yatar. Bu makalede, PHP'deki değişkenlerin ne olduğunu, nasıl tanımlandıklarını ve hangi veri tiplerini desteklediğini ayrıntılı bir şekilde inceleyeceğiz. Ayrıca, PHP'nin tip esnekliği ve modern PHP'deki tip güvenliği yaklaşımlarına da değineceğiz.
Değişken Nedir?
En basit tanımıyla, bir değişken, bilgisayar belleğinde bir veri parçasını saklamak için kullanılan bir "kutudur". Bu kutunun içine sayıları, metinleri, listeleri veya daha karmaşık yapıları koyabilirsiniz. PHP'de bir değişkenin değeri programın yürütülmesi sırasında değiştirilebilir, bu da onları dinamik ve etkileşimli uygulamalar oluşturmak için vazgeçilmez kılar.
PHP'de Değişken Tanımlama
PHP'de değişkenler her zaman bir dolar işareti ($) ile başlar. Dolar işaretinden sonra bir harf veya alt çizgi (_) gelmeli, ardından harfler, rakamlar veya alt çizgiler gelebilir. PHP'deki değişken isimleri büyük/küçük harf duyarlıdır.
Kod:
<?php
$isim = "Ahmet"; // Geçerli değişken
$sayi = 123; // Geçerli değişken
$_adres = "İstanbul"; // Geçerli değişken
// Geçersiz değişken isimleri:
// $1sayi = 456; // Rakamla başlayamaz
// $ad-soyad = "Mehmet"; // Tire (-) kullanılamaz
?>
Değişkenlere değer atamak için atama operatörü (=) kullanılır. PHP, bir değişkene ilk değer atandığında onun tipini otomatik olarak belirler. Bu, PHP'yi dinamik olarak tiplendirilmiş bir dil yapar.
PHP Veri Tipleri
PHP, birçok farklı veri tipini destekler. Bu tipler, verinin ne tür bir bilgi olduğunu ve nasıl depolandığını veya işlendiğini belirler. Temel olarak dört ana kategoriye ayrılabilirler:
1. Scalar (Tekil) Tipler:
Bu tipler, yalnızca bir değer tutabilen basit veri tipleridir.
a. String (Metin Dizisi)
Metin dizileri, harfler, sayılar ve sembollerden oluşan karakter dizileridir. Tek tırnak veya çift tırnak içinde tanımlanabilirler. Çift tırnak içinde değişkenler ayrıştırılır (interpolasyon), tek tırnak içinde ayrıştırılmaz.
Kod:
<?php
$mesaj = "Merhaba Dünya!"; // Çift tırnak
$tek_tirnak_mesaj = 'Bu bir tek tırnaklı metin.'; // Tek tırnak
echo "Mesaj: " . $mesaj . "[br]"; // Çift tırnakta değişken ayrıştırılır
echo 'Mesaj: ' . $tek_tirnak_mesaj . "[br]"; // Tek tırnakta değişken ayrıştırılmaz
// Değişken interpolasyonu
$isim = "Ayşe";
$selamlama = "Merhaba $isim!"; // "Merhaba Ayşe!"
$farkli_selamlama = 'Merhaba $isim!'; // "Merhaba $isim!"
echo $selamlama . "[br]";
echo $farkli_selamlama . "[br]";
?>
b. Integer (Tam Sayı)
Tam sayılar, ondalık veya kesirli kısmı olmayan sayılardır (pozitif, negatif veya sıfır).
Kod:
<?php
$yas = 30; // Onluk tabanda
$sicaklik = -5;
$buyuk_sayi = 2147483647; // 32-bit sistemlerde max değer
// Farklı tabanlarda sayılar:
$oktal_sayi = 012; // Sekizlik (8) tabanında: 10
$heks_sayi = 0xA; // Onaltılık (16) tabanında: 10
$ikili_sayi = 0b1010; // İkilik (2) tabanında: 10 (PHP 5.4+)
echo $oktal_sayi . "[br]";
echo $heks_sayi . "[br]";
echo $ikili_sayi . "[br]";
?>
c. Float (Kayan Noktalı Sayı) / Double
Ondalık veya kesirli kısmı olan sayılardır. PHP'de genellikle "float" veya "double" olarak anılırlar, temelde aynıdırlar.
Kod:
<?php
$fiyat = 19.99;
$pi = 3.14159;
$bilimsel_gosterim = 1.2e3; // 1200
echo $fiyat . "[br]";
echo $pi . "[br]";
echo $bilimsel_gosterim . "[br]";
?>
d. Boolean (Mantıksal)
Sadece iki olası değeri vardır: true (doğru) veya false (yanlış). Genellikle koşullu ifadelerde kullanılırlar.
Kod:
<?php
$aktif = true;
$admin = false;
if ($aktif) {
echo "Kullanıcı aktif.[br]";
} else {
echo "Kullanıcı pasif.[br]";
}
?>
2. Compound (Bileşik) Tipler:
Birden fazla değeri veya karmaşık yapıları tutabilen tiplerdir.
a. Array (Dizi)
Diziler, tek bir değişken altında birden fazla değeri depolamak için kullanılır. İndeksli (sayısal anahtarlı) veya ilişkisel (metin anahtarlı) olabilirler.
Kod:
<?php
// İndeksli dizi
$renkler = ["Kırmızı", "Yeşil", "Mavi"];
echo "İlk renk: " . $renkler[0] . "[br]";
// İlişkisel dizi
$kullanici = [
"ad" => "Ali",
"soyad" => "Can",
"yas" => 25
];
echo "Kullanıcı Adı: " . $kullanici["ad"] . "[br]";
// Diziye eleman ekleme
$renkler[] = "Sarı"; // Diziye sonuna ekler
$kullanici["sehir"] = "Ankara";
?>
- İndeksli dizilerde elemanlara sıfırdan başlayan sayısal indekslerle erişilir.
- İlişkisel dizilerde elemanlara tanımlanan metinsel anahtarlarla erişilir.
- Diziler PHP'de çok güçlü bir yapıdır ve neredeyse her yerde kullanılır.
b. Object (Nesne)
Nesneler, veri (özellikler) ve bu veriler üzerinde işlem yapabilen işlevleri (metotlar) bir araya getiren yapılardır. Nesne yönelimli programlamanın (OOP) temelidirler.
Kod:
<?php
class Ogrenci {
public $ad;
public $soyad;
public function __construct($ad, $soyad) {
$this->ad = $ad;
$this->soyad = $soyad;
}
public function tamAdGetir() {
return $this->ad . " " . $this->soyad;
}
}
$ogrenci1 = new Ogrenci("Deniz", "Yılmaz");
echo "Öğrenci: " . $ogrenci1->tamAdGetir() . "[br]";
?>
3. Special (Özel) Tipler:
Bunlar, özel durumları veya kaynakları temsil eden tiplerdir.
a. NULL
NULL, bir değişkenin hiçbir değer taşımadığını gösteren özel bir tiptir. Bir değişken:
- Değer atanmadan tanımlandığında
- Kendisine NULL değeri atandığında
- unset() fonksiyonu ile yok edildiğinde
Kod:
<?php
$degisken; // Tanımlandı ama değer atanmadı, NULL
var_dump($degisken); // Output: NULL
$baska_degisken = "Merhaba";
unset($baska_degisken); // Değişkeni yok et, NULL yapar
var_dump($baska_degisken); // Output: NULL (Notice: Undefined variable)
?>
b. Resource (Kaynak)
Kaynak tipi değişkenler, dış kaynaklara (veritabanı bağlantıları, dosya işlemleri, resimler vb.) bir referans tutar. Genellikle bu kaynaklar otomatik olarak kapatılır, ancak fclose() gibi fonksiyonlarla manuel olarak da kapatılabilirler.
Kod:
<?php
$dosya = fopen("ornek.txt", "r"); // Dosya kaynağı
var_dump($dosya); // Output: resource(...)
if ($dosya) {
fclose($dosya); // Kaynağı kapat
}
?>
PHP'nin Tip Esnekliği ve Otomatik Tip Dönüşümü (Type Juggling)
PHP, gevşek tipli bir dildir, yani bir değişkenin tipi, içerdiği değere göre otomatik olarak değişebilir. Bu, bazen kod yazmayı kolaylaştırsa da, beklenmedik tip dönüşümlerine yol açarak hatalara neden olabilir.
Kod:
<?php
$sayi_str = "10";
$sayi_int = 5;
$toplam = $sayi_str + $sayi_int; // "10" otomatik olarak integer'a dönüşür
echo "Toplam: " . $toplam . "[br]"; // Output: Toplam: 15
$bool_val = true;
$sayi_int2 = 10;
$sonuc = $bool_val + $sayi_int2; // true -> 1, false -> 0
echo "Sonuç: " . $sonuc . "[br]"; // Output: Sonuç: 11
?>
Bir değişkenin tipini öğrenmek için gettype() fonksiyonu veya daha detaylı bilgi için var_dump() fonksiyonu kullanılabilir.
Kod:
<?php
$isim = "Can";
$yas = 30;
$pi = 3.14;
$dogru = true;
$liste = [1, 2, 3];
$bos = NULL;
echo "İsim tipi: " . gettype($isim) . "[br]"; // string
echo "Yaş tipi: " . gettype($yas) . "[br]"; // integer
echo "Pi tipi: " . gettype($pi) . "[br]"; // double
echo "Doğru tipi: " . gettype($dogru) . "[br]"; // boolean
echo "Liste tipi: " . gettype($liste) . "[br]"; // array
echo "Boş tipi: " . gettype($bos) . "[br]"; // NULL
echo "[br][b]var_dump() ile detaylı bilgi:[/b][br]";
var_dump($isim);
var_dump($yas);
var_dump($liste);
?>
Tip Belirtme (Type Hinting) ve Tip Bildirimleri (Type Declarations) - Modern PHP
PHP 7 ve sonraki sürümlerle birlikte, fonksiyon parametrelerinde, dönüş değerlerinde ve sınıf özelliklerinde tip belirtme (type hinting) özelliği gelmiştir. Bu, kodun daha okunabilir, bakımı daha kolay olmasını sağlar ve hataları derleme/çalışma zamanında yakalamaya yardımcı olur.
Kod:
<?php
// Parametre tip belirtme
function topla(int $sayi1, int $sayi2): int {
return $sayi1 + $sayi2;
}
echo "Toplam: " . topla(5, 7) . "[br]"; // Output: Toplam: 12
// topla("a", 7); // TypeError verir
// Dönüş değeri tip belirtme
function kullaniciBilgisi(string $ad, int $yas): string {
return "Ad: $ad, Yaş: $yas";
}
echo kullaniciBilgisi("Murat", 40) . "[br]";
?>
"Gevşek tiplendirme, esneklik sağlarken, tip bildirimleri kodun güvenilirliğini artırır. Modern PHP, bu iki dünyanın en iyi yönlerini bir araya getirerek dengeli bir yaklaşım sunar." - Bilge Geliştirici
Değişken Kapsamı (Variable Scope)
Değişkenin programın hangi bölümünden erişilebildiğini belirler. PHP'de başlıca üç kapsam türü vardır:
- Yerel (Local) Kapsam: Bir fonksiyon içinde tanımlanan değişkenler yalnızca o fonksiyon içinde erişilebilir.
- Küresel (Global) Kapsam: Fonksiyon dışında tanımlanan değişkenler küreseldir ve her yerden erişilebilir. Ancak bir fonksiyon içinde global bir değişkene erişmek için global anahtar kelimesi kullanılmalıdır.
- Statik (Static) Kapsam: Bir fonksiyonun çağrılması sona erdikten sonra bile değerini koruyan yerel değişkenlerdir.
Kod:
<?php
$globalDegisken = "Ben globalim"; // Global kapsam
function testKapsam() {
$yerelDegisken = "Ben yerelim"; // Yerel kapsam
echo $yerelDegisken . "[br]";
// Global değişkene erişim (doğru yol)
global $globalDegisken;
echo "Fonksiyon içinden global: " . $globalDegisken . "[br]";
// Statik değişken
static $sayac = 0;
$sayac++;
echo "Sayac: " . $sayac . "[br]";
}
testKapsam(); // Sayac: 1
testKapsam(); // Sayac: 2
echo $globalDegisken . "[br]"; // Global değişkene erişim
// echo $yerelDegisken; // Hata! Yerel değişkene dışarıdan erişilemez.
?>

Bu görsel, PHP'deki değişken kapsamlarını şematik olarak göstermektedir. (Gerçek bir görsel URL'si kullanmanız önerilir.)
Sonuç
PHP'deki değişkenler ve veri tipleri, her PHP geliştiricisinin sağlam bir temel oluşturması için anlaması gereken kritik kavramlardır. PHP'nin dinamik yapısı esneklik sunarken, PHP 7 ve sonraki sürümlerle gelen tip bildirimleri, daha güçlü ve hatasız uygulamalar yazmamıza olanak tanır. Kodunuzu yazarken değişkenlerin nasıl davrandığını ve hangi tipte veriyi tuttuklarını anlamak, performanslı ve bakımı kolay kod yazmanın anahtarıdır. Unutmayın, iyi bir programcı sadece kodu yazan değil, aynı zamanda kodu anlayan ve optimize edendir.
PHP Resmi Dökümantasyon: Değişkenler
PHP Resmi Dökümantasyon: Tipler