Mehmet

WFN Üye
Konular
1,851
Mesajlar
1,852
Çözüm
0
Ticaret Puanı
0
Üyelik
1 Ay 6 Gün
Konum
YurtDışı
Web Sitesi
Var
Alanı
Google Adsense
1/1
Konu sahibi
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 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österimAnlamıKontrol amacı
string(5) "admin"5 baytlık ASCII metinMetin 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ı?
NULLNull değeri; boş metin/0 ile aynı tür değildirAtama, sorgu veya dönüş kontrolü
Bir form alanının boş geldiğini düşünüyorsanız şu küçük kontrol sorunun kaynağını gösterir:
  1. Şüphelendiğiniz değişkeni, kullanıldığı satırdan hemen önce var_dump($degisken); ile yazdırın.
  2. Çıktıdaki türü ve değeri beklediğiniz sonuçla karşılaştırın.
  3. Değer NULL ise değişkenin atanıp atanmadığını ve önceki fonksiyonun gerçekten sonuç döndürüp döndürmediğini inceleyin.
  4. Değer string olduğu hâlde sayı bekliyorsanız form verisi veya URL parametresi gibi dış girdilerin türünü ayrıca değerlendirin.
  5. 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" ile 1 aynı 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.

Sık sorulan sorular​

var_dump sonucunu atayınca neden metin yerine null alıyorum?​

var_dump metin döndürmez, çıktıyı doğrudan üretir. Sonucunu bir değişkene atamak dump metnini saklamaz; dönüş null olur. Gerçekten metin yakalamak gerekiyorsa ayrı çıktı tamponu açıp çıktıyı ob_get_clean ile almak gibi bir yöntem kullanılabilir; gizli değerleri kalıcı günlüğe yazmadan önce ayıklayın.

Nesnede bulunan her özellik dump içinde görünmek zorunda mı?​

Hayır. Bir sınıf __debugInfo tanımlayarak hata ayıklama çıktısında gösterilen özellikleri değiştirebilir. Bu yüzden dump görünümünü nesnenin bütün iç durumunun kesin dökümü sanmayın. Sorunu araştırırken sınıfın davranışını ve ilgili özelliğin erişim kurallarını da inceleyin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic