Kezdőoldal » Számítástechnika » Weblapkészítés » Miért utálják ilyen sokan a...

Miért utálják ilyen sokan a PHP nyelvet?

Figyelt kérdés

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?



2018. dec. 17. 06:33
1 2
 11/12 2*Sü ***** válasza:

#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

2018. dec. 20. 11:25
Hasznos számodra ez a válasz?
 12/12 2*Sü ***** válasza:

> 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

2018. dec. 20. 12:31
Hasznos számodra ez a válasz?
1 2

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!