Hirdetés

Keresés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz Soak #10457 üzenetére

    foreach($previous as $previous){
    foreach($current as $current){
    foreach($next as $next){

    A lényeget cucka már leírta, de nekem a fentiektől nyílt ki legjobban az agyam. :D Nem is tudom, ez működik-e így egyáltalán, bár valószínűnek tartom, hogy inkább nem, és felmerül, hogy felül is írja a változót...
    De ezek szerint a foreach használatának logikája sem jött át, vagy nem vágom, ilyet miért toltál be a kódodba.

    Példa jó használatra:
    foreach($ezatömböd as $ezazaktuáliskulcs => $ezazaktuálisérték){
    }

    vagy csak
    foreach($ezatömböd as $ezazaktuálisérték){
    }

    De ne legyen már ugyanaz a neve a tömbnek és az aktuális értéknek...

    (#10461) Soak : annyira rondán van indentálva a kódod, hogy őszintén szólva nem sok kedvem van a végignézésére.
    Mit használsz PHP-fejlesztésre? Csomó IDE-ben van automatikus formázás, pl. NetBeans-ben Alt+Shift+F.
    DW: [link].

    =========

    (#10458) cucka :
    "Az empty() nyelvi elemet (figyelem, ez nem függvény) érdemes elkerülni"
    Szerintem nem kell kerülni, tudni kell, hol indokolt a használata.
    Akár debuggolásra is jól jöhet.
    És/vagy ha az ember számíthat NULL, 0 vagy false értékekre is valamilyen oknál fogva.
    Persze mielőtt mondanád, azzal egyetértek, hogy jobb szigorú szabályokhoz kötni, adott függvények/metódusok mivel térhetnek vissza, de előfordulhat olyan eset, hogy nem vagy biztos benne, milyen jellegű típus várható az empty()-nek megfelelőek közül, és nincs kedved típusonként ellenőrizni.
    Persze a konkrét esetben valóban nem indokolt, de általános értelemben szerintem nem feltétlenül igaz, hogy kerülni kell.

  • cucka

    addikt

    válasz Soak #10457 üzenetére

    Elnézést, ha belepofázok, de jól láthatóan nem értetted meg az OOP lényegét:
    - Az osztályod statikus függvényeket tartalmaz, ami azt jelenti, hogy nem csináltál mást, mint egy névteret globális függvényeknek.
    - A függvényeid globális változókat változtatnak, ahelyett, hogy rendes (matematikai) függvényként működnének: a függvény kap n darab bemeneti paramétert, ami alaján kiszámolja az eredményt. Ennyit csinál, nem többet. Nem módosítja a paramétereit. Nem nyúl ki a globális névtérbe. Sőt, igyekezni kell mellékhatás-mentesre csinálni (nyilván sokszor elkerülhetetlen).

    A fentiek miatt elkerülheted a rengeteg global deklarációt.

    Továbbá itt van ez a kódrészlet:
    $previous = self::find_previous($id, $users_id);
    ...
    foreach($previous as $previous){
    global $previous_pic_id;
    $previous_pic_id = $previous->id;
    }

    - Ciklusban deklarálod a globál változót, biztos ami biztos? :D
    - A foreach-ben érdemes kerülni a névütközést.
    - A ciklusod annyit csinál, hogy végigmegy a previous tömbön, majd az utolsó elemnek eltárolja az id-ját egy globális változóba. Minek ehhez végigmenni a previous tömbön?
    - Ha a previous tömb utolsó elemére van csak szükséged, miért nem azt adja vissza a függvényed?
    - Mi van, ha az első képen állsz és nincs previous? Nem kezeled le az esetet, kiírsz egy üres stringet bele a html-be.
    - Ugyanez a foreach megismétlődik a $current változónál, ami viszont nyilvánvalóan nem egy tömb, mert egy aktuális elem van. Ott mi szükség rá? (Vagy mégis tömb? A kódból nem derül ki, és ez nagy baj)

    Még:
    - A $_GET['p'] értékét háromszor escape-eled ki, amíg bekerül az adatbázisba. Ha valóban van az értékben egy olyan karakter, amit ki kell escape-elni, akkor a kódod nem fog működni.
    - Az empty() nyelvi elemet (figyelem, ez nem függvény) érdemes elkerülni, jól meg tudod sz*patni magad vele.
    - Mivel a php-ban nem látod, hogy melyik változó milyen típusú, érdemes beszédesebb neveket adni - például ami tömb, az többes szám, vagy a függvény paramétereknél $id helyett $pic_id - így nem kell nyomozni, ha fél év múlva tovább akarod fejleszteni a kódodat, akkor el is fogod tudni olvasni

Új hozzászólás Aktív témák