on Aug 8th, 2008När skall PHP-folket lära sig?
Allt för ofta när man kommenterar php-kod på diverse forum dyker problem upp som aldrig hade kommit upp om folk lärt sig programmera “på riktigt”, eller om php hade varit strikt typat, vilket vore att föredra.
Ta till ett exempel som detta:
Skriptet kommer här att skriva ut “Hmm?”.
Visst, nu tänker du säkert, varför skulle man vilja jämföra en integer med en sträng? Det finns många många gånger, t.ex. när man hämtar data från en datakälla som en databas eller web-service.
Kort och gott kärt folk, använd ALLTID
===
när ni skall jämföra något. Att använda “===” innebär att man inte bara kollar att värdena stämmer, utan även datatypen.
Att alltid använda den operatorn kan tyckas vara lite att ta i då det faktiskt inte alltid är helt nödvändigt. Dessutom orsakar det en minimal prestanda förlust, vilket kanske inte är så önskvärt vid väldigt hård belastning, då det kan vara överflödigt att jämföra datatyp. Å andra sidan så kan en hel del o förväntade buggar uppstå, precis som du visade i ditt exempel.
Adam, visst är det inte alltid helt nödvändigt, men ofta blir det som sagt mycket oväntade fel när man använder den dubbla operatorn.
Ett klassiskt problem jag hade var när jag försökte köra en if-sats ungefär:
if(strpos(“abc”, “a”) == true)
Den kommer returnera position 0, vilket i PHP == false, hade jag däremot använt den trippla operatorn hade det naturligtvis fungerat.
Ja, jag håller med. Det finns massor med problem som kan uppstå p.g.a. användning av fel jämförelse-operator. Det jag reagerade lite på var att du skrev att identitets-operatorn alltid ska användas, vilket känns aningen overkill. Det kanske är jag som är lite petig med hur du formulerat dig, men att skriva att den oftast bör användas verkar mer korrekt.