Miért utálják ilyen sokan a PHP nyelvet?
Rengeteg "közvéleménykutatásban látszik, hogy az egyik legkevésbé szimpatikus a széles körben használt nyelvek közül.
Mi ennek az oka?
#8 > No igen, hasonló anomáliák a JavaScript-ről is elmondhatók.
A mostani kedvencem:
0 == null → false
0 === null → false
0 < null → false
0 > null → false
Oké, eddig még meg lehet emészteni, de:
0 <= null → true
0 >= null → true
> Ehelyett a förmedvény helyett minden épeszű programozó egy switch-case blokkot használna.
Ez nem feltétlenül förmedvény, ez egy lehetőség. Van, aki sportot űz a minél kevesebb gépelésből, és nem is olyan ritka, néha meg kimondottan előnyös. Lásd pl.:
if (!database_connect()) die('Nem lehet kapcsolódni az adatbázishoz!');
vs.
database_connect() || die('Nem lehet kapcsolódni az adatbázishoz!');
Sok esetben sokkal átláthatóbb is, hogy mi történik.
if (!a_terv()) if (!b_terv()) if (!c_terv()) feladom();
vs.
if (!a_terv()) { if (!b_terv()) { if (!c_terv()) { feladom(); } } }
vs.
a_terv() || b_terv() || c_terv() || feladom();
~ ~ ~ ~ ~ ~ ~
Vagy jelen esetben akár lehetne tömböt is használni. Előnye, hogy ki lehet szervezni mondjuk egy config fájlba is, és ha többször kell használni, egy helyen kell csak bővíteni a járművek listáját:
$vehicles = array(
'list' => array(
'B' => 'bus',
'A' => 'airplane',
'T' => 'train',
'C' => 'car',
'H' => 'horse'
),
'default' => 'feet'
);
$vechile = isset($vehicles['list'][$arg]) ? $vehicles['list'][$arg] : $vehicles['default'];
vagy az új ?? operátorral:
$vechile = $vehicles['list'][$arg] ?? $vehicles['default'];
~ ~ ~ ~ ~ ~ ~
Viszont azért van, hogy valami hasonló használata átláthatóbb és tömörebb lenne. Pl. van egy egész számod. Ha a szám pontosan kétjegyű, akkor azzal kell dolgoznod, ha nem, akkor a hozzá legközelebb eső kétjegyű számmal:
function limited($val, $min, $max) {
return
($val > $max) ? $max :
($val < $min) ? $min :
$val;
}
Az eredmény:
limited(3, 10, 99) → 10 (ok)
limited(52, 10, 99) → 52 (ok)
limited(183, 10, 99) → 10 (hehhh?)
Ja, mert a PHP ezt nem így érti:
($val > $max) ? $max : ( ($val < $min) ? $min : $val )
azaz
(183 > 99) ? 99 : ( (183 < 10) ? 10 : 183 ) =
= true ? 99 : ( false ? 10 : 183 ) =
= true ? 99 : 183 =
= 99
Hanem így:
( ($val > $max) ? $max : ($val < $min) ) ? $min : $val
és mivel típusosság hiányában a külső zárójelben lévő számot zokszón nélkül átalakítja logikai értékké, még hibára se fut:
( (183 > 99) ? 99 : (183 < 10) ) ? 10 : 183 =
= ( true ? 99 : false ) ? 10 : 183 =
= 99 ? 10 : 183 =
= true ? 10 : 183 =
= 10
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!