CodeBlanks Logo Icon CodeBlanks

Karşılaştırma tuzakları

PHP kursu · Başlangıç · Ders 40/116

=== ve == arasındaki farkı ve tür dönüştürme tuzaklarını öğrenirsin.

== ve === farkı

PHP'de iki eşitlik operatörü vardır. == esnek karşılaştırma yapar: türleri birbirine çevirir. === sıkı karşılaştırma yapar: hem değer hem tür aynı olmalıdır.

Örneğin "0" == false sonucu true'dur çünkü PHP dizeyi false'a çevirip karşılaştırır. Ama "0" === false sonucu false'tur çünkü dize ve bool farklı türlerdir. Sürprizleri önlemek için === tercih edilir.

Tür dönüştürme tuzakları

Esnek karşılaştırmada PHP bazı şaşırtıcı dönüşümler yapar. 0 == "abc" true döner çünkü dize sayıya çevrilince 0 olur. null == false true, null == 0 true ama null === false false'tur.

Bu yüzden özellikle kullanıcıdan gelen veride, form gönderiminde ve parola kontrolünde her zaman === veya !== kullanmak gerekir. Beklenmeyen tür dönüşümleri güvenlik açıklarına yol açabilir.

Uygulama Sıkı kullanıcı kontrolü

Bir $role değişkeni zaten tanımlı. if ile $role === 'admin' koşulunu sıkı karşılaştırma ile yaz; true ise echo 'hoşgeldin' yazdır. == kullanma; === kullan.

Örnek çözümü göster
Sıkı karşılaştırma için if ($role === 'admin') { ... } yaz.
Örnek çözüm:
<?php
$role = 'admin';
// Rol kontrolü
if ($role === 'admin') {
  echo 'hoşgeldin';
}

Kendini test et

  1. var_dump("0" == false); çıktısı nedir?

    var_dump("0" == false);
    • bool(false)
    • NULL
    • bool(true)
    • string(0)
    Cevabı göster

    bool(true) — Doğru. PHP '0' dizesini false'a çevirir, bu yüzden == true döner.

  2. Eşitlik operatörlerini eşle

    ==
    Eşit (esnek)
    ===
    Eşit (sıkı)
    !=
    Eşit değil (esnek)
    !==
    Eşit değil (sıkı)
  3. Sıkı eşitlik operatörünü yaz

    var_dump("5" ____ 5);
    Cevabı göster
    var_dump("5" === 5);

Başlangıç bölümündeki tüm dersler