Değişkenler


    × Bunları biliyor muydunuz?
"URL::base() ve URL::site() kullanımları farklıdır. Özellikle varlık dosyalarına yol verilirken URL::base(), [a] etiketi ile köprü oluştururken URL::site() kullanılmalıdır."


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ımlada uyulması gereken bazı kurallar vardır. Bunlar aşağıdaki gibidir.

Değişken isimleri alt tire(_) veya bir alfabetik karakterle başlamalıdır.
Latin dillerindeki ğ, ü, ş gibi harflerde dahil özel hiç bir 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;    # 1. kural ihlal edilmiştir.
$sayı = 10;     # 2. kural ihlal edilmiştir.
$yeni degisken; # 2. kural ihlal edilmiştir.
$yeniDeğişken;  # 2. kural ihlal edilmiştir.
$yeni#degisken  # 2. 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 = 'robot@znframework.com'; 

echo $email;
robot@znframework.com
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
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

 

 

# 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