- Konu sahibi
- #1
var_dump(), bir PHP değişkeninin değerini ve veri türünü ayrıntılı olarak ekrana yazdıran hata ayıklama işlevidir. Özellikle beklenmeyen sonuçlarda değişkenin gerçekten
Bir değişkeni parantez içinde vererek çağırmanız yeterlidir:
Örnek çıktı yaklaşık olarak şöyle olur:
Örneği PHP CLI ile çalıştırırsanız temel tür ve değerleri okuyabilirsiniz. Xdebug gibi araçlar çıktı biçimini değiştirebilir; satır düzenini tek doğru görünüm gibi kabul etmeyin.
Bu çıktıda
Birden fazla değişkeni tek çağrıda inceleyebilirsiniz:
Beklenen çıktı sırasıyla
Bir form alanının boş geldiğini düşünüyorsanız şu küçük kontrol sorunun kaynağını gösterir:
string, int, bool, array, object veya NULL olup olmadığını görmek için kullanılır. Bir değer döndürmez; bilgiyi doğrudan çıktıya basar.Nasıl kullanılır?
Bir değişkeni parantez içinde vererek çağırmanız yeterlidir:
Kod:
<?php
$kullanici = [
'id' => 42,
'aktif' => true,
'roller' => ['editor', 'uye']
];
var_dump($kullanici);
Örnek çıktı yaklaşık olarak şöyle olur:
Kod:
array(3) {
["id"]=>
int(42)
["aktif"]=>
bool(true)
["roller"]=>
array(2) {
[0]=>
string(6) "editor"
[1]=>
string(3) "uye"
}
}
Örneği PHP CLI ile çalıştırırsanız temel tür ve değerleri okuyabilirsiniz. Xdebug gibi araçlar çıktı biçimini değiştirebilir; satır düzenini tek doğru görünüm gibi kabul etmeyin.
Bu çıktıda
array(3) dizide üç anahtar bulunduğunu, int(42) değerin tam sayı olduğunu, bool(true) değerin mantıksal olarak doğru olduğunu gösterir. Metinlerde string(6) ifadesindeki sayı, metnin bayt uzunluğudur. ASCII örnekte karakter sayısıyla eşleşse de UTF-8 Türkçe harflerde aynı olmayabilir. Örneğin UTF-8 olarak kaydedilmiş çay metni üç karakter ve dört bayttır.Birden fazla değişkeni tek çağrıda inceleyebilirsiniz:
Kod:
$adet = 7;
$fiyat = 19.90;
$sonuc = null;
var_dump($adet, $fiyat, $sonuc);
Beklenen çıktı sırasıyla
int(7), float(19.9) ve NULL bilgileridir. Böylece yalnızca değeri değil, PHP'nin o değeri hangi türde tuttuğunu da kontrol edersiniz.Çıktı nasıl yorumlanır?
| Gösterim | Anlamı | Kontrol amacı |
|---|---|---|
string(5) "admin" | 5 baytlık ASCII metin | Metin uzunluğu ve içeriği |
int(10) | Tam sayı | Sayısal işlem yapılabilir mi? |
bool(false) | Mantıksal yanlış | Koşul neden çalışmadı? |
NULL | Null değeri; boş metin/0 ile aynı tür değildir | Atama, sorgu veya dönüş kontrolü |
- Şüphelendiğiniz değişkeni, kullanıldığı satırdan hemen önce
var_dump($degisken);ile yazdırın. - Çıktıdaki türü ve değeri beklediğiniz sonuçla karşılaştırın.
- Değer
NULLise değişkenin atanıp atanmadığını ve önceki fonksiyonun gerçekten sonuç döndürüp döndürmediğini inceleyin. - Değer
stringolduğu hâlde sayı bekliyorsanız form verisi veya URL parametresi gibi dış girdilerin türünü ayrıca değerlendirin. - Sorun belirlendikten sonra
var_dump()satırını kaldırın veya yalnızca geliştirme ortamında çalışacak şekilde sınırlandırın.
var_dump ile print_r arasındaki fark
print_r() dizileri ve nesneleri daha sade, okunabilir bir biçimde gösterir. var_dump() ise veri türünü, metin uzunluğunu ve yapının ayrıntılarını da verdiği için tür kaynaklı hataları bulmada daha uygundur. Yalnızca yapıyı hızlı okumak istiyorsanız print_r(), tür ve değer ayrımını doğrulamak istiyorsanız var_dump() kullanın.Sık yapılan hatalar
- Üretim çıktısında bırakmak: Değişken içeriği, oturum bilgileri veya nesne özellikleri tarayıcıya sızabilir. Teşhis tamamlanınca kaldırın.
- Yalnızca değere bakmak:
"1"ile1aynı görünse bile türleri farklıdır. Tür bilgisini de okuyun. - Yanlış satırda kontrol etmek: Değişken değiştirildikten sonra değil, sorunun oluştuğu noktaya mümkün olduğunca yakın yerde inceleme yapın.
- HTML içinde dağınık çıktı almak: Karmaşık dizilerde okunabilirlik için geçici geliştirme ortamındaki CLI veya hata ayıklama aracı kullanılabilir. Kullanıcı girdisini içeren dump çıktısını kaçış uygulamadan HTML içine yerleştirmeyin; normal yanıtı ve JSON yapısını da bozabilirsiniz.