Karşılaştırma tuzakları
=== 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
-
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.
-
Eşitlik operatörlerini eşle
- ==
- Eşit (esnek)
- ===
- Eşit (sıkı)
- !=
- Eşit değil (esnek)
- !==
- Eşit değil (sıkı)
-
Sıkı eşitlik operatörünü yaz
var_dump("5" ____ 5);Cevabı göster
var_dump("5" === 5);