Değişkenler
"Veritabanından sorgu isteğini tamamlamak için kullanılan get() yöntemi yerine doğrudan tabloismi() biçiminde tanımlama yapabilirsiniz. Örnek: DB::users();"
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.
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
Aşağıda kurallara uygun değişken tanımlamalarına örnekler verilmiştir.
$sayi1 = 10;
$sayi = 10;
$yeni_degisken;
$yeniDegisken;
$yenidegisken;
# 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.
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;
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;
Değişkenler mantıksal türden true veya false değerlerini de alabilir.
$kontrol = true;
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.
Değişkenlere diziler de aktarılabilir.
$sehirler = ['istanbul', 'izmir'];
echo $sehirler[1];
Değişkenlere fonksiyon ataması da yapılabilir.
$fonksiyon = function(string $value){ return $value; };
echo $fonksiyon('ZN Framework');
Veya herhangi bir değişkeni saklayabilir.
$a = 10;
$b = $a;
echo $b;
# 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;
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;
abcxyz
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';
$a = NULL;
echo $a ?? 'tanımsız';
$a = false;
echo $a ?? 'tanımsız';
Eğer NULL tanımlı değişken yazdırılırsa herhangi bir hataya neden olmaz.
$a = NULL;
echo $a;
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 = NULL;
echo $a ?: 'A';
$a = false;
echo $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.
# 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);
$a = '10';
$a = (int) $a;
echo gettype($a);
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];
$dizi = (float) (object) [1, 2, 3];
Veya bir dizi;
$dizi = (string) [1, 2, 3];