Değişkenler


    × Bunları biliyor muydunuz?
"Başlangıç dosya ve kontrolcüleri üzerinden tüm kontrolcü ve görünümlere veri gönderilebilir."


Değişkenler programlama dilinin en önemli unsurların biridir. Değişkenler atama operatörü ile değer alırlar. Değişkenler özellikle kod içerisinde değişen değerleri temsil etmek için oldukça kullanışlıdırlar. Değişkenler bazen hesaplanabilir sayısal bir değer, herhangi bir dizge saklayabilecekleri gibi bir fonksiyon veya bir sınıfın yöntemini de saklayabilir. Bir değerin kod içerisinde çokça kullanılacağı durumlarda bu değerin bir değişkene aktarılar kullanılması değerin değiştirilebilirliği açısından oldukça kritiktir.

 

 

# Değişken Nasıl Tanımlanır?


PHP programlama dilinde değişkenlerin söz dizimi aşağıdaki gibidir.

Kural: $degiskenAdi = 'Değişken Değeri';

PHP'de diğer programlama dillerinde olduğu gibi değerin veri türüne göre değişken türü belirtilmez. Tüm değişkenler bir $ işareti ile başlar;

 

 

# Değişken Tanımlama Kuralları


Her programlama dilinde olduğu gibi PHP'de de değişken tanımlamada uyulması gereken bazı kurallar vardır. Bunlar aşağıdaki gibidir.

Değişken isimleri İngilizce'de olmayan alfabetik karakter(ü, ö, ç, ğ ...) içeremez.
 Değişken isimleri sayı ile başlayamaz.
Değişken isimleri _(alt tire) dışında herhangi bir özel karakter içeremez.

Gerçesiz Değişken Tanımlamaları

 Aşağıda geçersiz değişken tanımlamalarına örnekler verilmiştir.

$1sayi = 10;    # 2. kural ihlal edilmiştir.
$sayı = 10;     # 1. kural ihlal edilmiştir.
$yeni degisken; # 3. kural ihlal edilmiştir.
$yeniDeğişken;  # 1. kural ihlal edilmiştir.
$yeni#degisken  # 3. kural ihlal edilmiştir
Geçerli Değişken Tanımlamaları

Aşağıda kurallara uygun değişken tanımlamalarına örnekler verilmiştir.

$sayi1 = 10;
$sayi = 10;
$yeni_degisken;
$yeniDegisken;
$yenidegisken;
Bilgi: Değişkenler tanımlanırken ön tanımlı değer içermek zorunda değildir.

 

 

# Değişkenin Alabileceği Değerler


Bir değişken her türde veriyi tutabilir. Bu değişkenin hangi amaçla kullanılacağına göre değişir.

Dizge

Dizgeler daima tek veya çift tırnak ile ifade edilirler. Bu durum değişkene ön tanımlı bir değer atarken de geçerlidir.

$email = '[email protected]'; 

echo $email;
Numerik

Değişkenlere sayısal değerler de aktarılabilir. Aritmetik için kullanılacak sayısal ifadelerin tırnaksız yazılması doğru bir kullanım olur. Diğer programlama dillerindeki gibi farklı sayı türleri için veri türü belirtilmesine gerek yoktur.

$tamSayi = 10;
$ondalikliSayi = 5.5;

echo $tamSayi + $ondalikliSayi;
15.5
Mantıksal

Değişkenler mantıksal türden true veya false değerlerini de alabilir.

$kontrol = true; 
Boş

Değişkenler bir kaç türde boş değer alabilir.

$kontrol = NULL;  # Hiç bir değere sahip değildir. isset() yönteminde false döner.
$kontrol = '';    # Dizge türünde boş bir değere sahiptir. isset() yönteminde true döner.
$kontrol = 0;     # Sayısal türde boş bir değere sahiptir. isset() yönteminde true döner.
$kontrol = false; # Mantıksal türde boş bir değere sahiptir. isset() yönteminde true döner.
Dizi

Değişkenlere diziler de aktarılabilir.

$sehirler = ['istanbul', 'izmir'];

echo $sehirler[1];
izmir
Fonksiyon

Değişkenlere fonksiyon ataması da yapılabilir.

$fonksiyon = function(string $value){ return $value; };

echo $fonksiyon('ZN Framework');
ZN Framework
Değişken

Veya herhangi bir değişkeni saklayabilir.

$a = 10;
$b = $a;

echo $b;
10

 

 

# Tanımsız Değişken Hataları


Geliştiricilerin değişken tanımlamalarında aldıkları genel hata tanımlı olmayan bir değişkenin kullanılması durumudur. Bir değişken tanımlanmadan kullanılırsa uyarı (Notice) türünden bir hata oluşur.

echo $a;
Notice: Undefined variable: a in C:\xampp\htdocs\test.php on line 3

Bu hataya genelde bir döngü ile bir diziye yeni değerler ekleneceği veya bir dizgenin biçimlendirilmesi gerektiği zamanlarda düşülür.

$str .= 'abc';
$str .= 'xyz';

echo $str;
Notice: Undefined variable: str in C:\xampp\htdocs\test.php on line 3
abcxyz
Null Kontrolü

Bir değişkenin değer alıp almadığından emin değilseniz ve uyarı türünden hata ile de karşılaşmak istemiyorsanız null kontrol operatörünü (??) kullanmanız gerekir.

echo $a ?? 'tanımsız';
tanımsız
$a = NULL;

echo $a ?? 'tanımsız';
tanımsız
$a = false;

echo $a ?? 'tanımsız';
false

Eğer NULL tanımlı değişken yazdırılırsa herhangi bir hataya neden olmaz.

$a = NULL;

echo $a;
NULL
Empty Kontrolü

Bir değişkenin değer alıp almadığından emin değilseniz ve boş kontrol(?:) operatörü kullanılır.

echo $a ?: 'A';
A
$a = NULL;

echo $a ?: 'A';
A
$a = false;

echo $a ?: 'A';
A

NULL ile Empty eşit değildir. Dolayısı ile bir değişken kontrol edilirken "tanımlanmamış mı olmalı yoksa tanımlanmış olup değer almamış mı olmalı" durumlarından hangisinin kontrol edildiği bilinmelidir.

echo $a ?: 'A'; # $a tanımlı olmadan boş kontrolü yapılmaya çalışıldığından hata verecektir.
Notice: Undefined variable: a in C:\xampp\htdocs\test.php on line 3

 

 

# Tür Dönüşümleri


Değişkenlerin türleri tanımlandıktan sonra değiştirilebilir. Ancak her tür her türe dönüştürülemez.

Hangi Türler Neye Dönüştürülebilir
array - int bool object float
object - bool array - -
string bool int array object float
int string bool array object float
bool string int array object float
float string int array object bool
$a = '10';

echo gettype($a)
string
$a = '10';
$a = (int) $a;

echo gettype($a);
integer

Geçersiz bir tür dönüştürme işlemi yapılmaya çalışırsa kontrol edilebilir türden ölümcül hata oluşurur.

$dizi = (string) (object) [1, 2, 3];
Recoverable fatal error: Object of class stdClass could not be converted to string in C:\xampp\htdocs\test.php on line 3
$dizi = (float) (object) [1, 2, 3];
Notice: Object of class stdClass could not be converted to float in C:\xampp\htdocs\test.php on line 3

Veya bir dizi;

$dizi = (string) [1, 2, 3];
Notice: Array to string conversion in C:\xampp\htdocs\test.php on line 3