Ugye ez egy szemét nyelv. A legrosszabb fajtából. Persze ezzel is el lehet kódolgatni, csak ismerni a nyelvet. De úgy néz ki 10+ év PHP-zás után is találtam új hülyeséget. Nem akárhol. Na akkor kezdjük.
Inkonzisztencia:
FALSE == ""
FALSE == 0
FALSE == 0.0
FALSE == "0"
FALSE == NULL
FALSE == array()
FALSE == $nonextistent
Oké, ezt eddig is tudtuk, vicc, pl array() != 0
de NULL == ""
stb. Oké, ez kivédhető, oda kell figyelni a típusokra, a nagyonegyenlő operátort kell használni mindenhol.
Nézzük a NULL
-t. Ugye kétféle esetben szoktunk találkozni NULL
értékkel:
1. Nem létező változó, aminek használatáért NOTICE vagy WARNING a jutalom
2. Konkrétan NULL
értékre beállított változó.
Az utóbbi eset vizsgálható $var === NULL
, ez faja. Az előbbihez viszont az isset($var)
szükséges, különben hibát kapunk. Mekkmesterek persze az STFU operátort használják, így effektíve ugyanaz az eredmény, csak rövidebben, azaz: @$var === NULL
De akinek van egy kis esze, az inkább nem csinál olyan helyzetet, ahol vizsgálni kell azt, hogy létezik-e egy változó.
Az isset
másra is jó, mégpedig, hogy tömb kulcsa létezik-e, azaz isset($array['key'])
. Vagyis nem. Hisz ha tömb értke ott NULL
, akkor hamis értéket kapunk, pedig létezik. Hát erre a feladatra ott a array_key_exists($array, 'key')
Fantasztikus, ez már a NULL
értéket is látja, ö'öm és bódottá'! Csak hát lassú szegény, ez így érdemes használni:
isset($array['key']) || array_key_exists($array, 'key')
Tömör gyönyör.
S akkor jön az empty()
függvény. Ezt eddig arra használtam, hogy megvizsgáljam, hogy egy tömb üres-e. Na most, csak ma szembesültem a PHP dokumentációjában azzal, hogy ennek a függvény valójában mit csinál:
!isset($var) || $var == FALSE
Anyám borogass! Soha többet nem használok empty()
-t. Kiirtom minden kódomból. Ennek semmi értelme nincs. Effektíve elég lenne annyi írni csak feltételnek, hogy:
$var