Keresés

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

  • Sk8erPeter

    nagyúr

    válasz PumpkinSeed #16447 üzenetére

    Szerencsére a többiek elég alaposan válaszoltak az érdemi részre. :)

    "Illetve egy függvény, hogy tud több String típust is visszaadni, például egy adatbázisból kiolvasott név és lakcím adatot például?"
    Csak a pontosság kedvéért: nincs olyan, hogy "több String típus", string van, és kész, szerintem Te arra gondoltál, hogy mondjuk több string "értéket" szeretnél visszaadni. Tehetsz ilyet összetett típussal, tömbbel vagy objektummal is vissza tudsz térni egy függvényből. Egy függvénynek egy darab visszatérési értéke van.
    Szerk.: ja, most látom, disy68 ezt is leírta neked.
    Amúgy ilyen, hogy "adatbázisból kiolvasott név és lakcím adat", tipikusan valami objektumhoz kellene, hogy tartozzon ahhoz, hogy ez normálisan kezelhető legyen (ne pedig többdimenziós asszociatív tömbborzalmakat kelljen kezelned), például van egy Person osztályod (most csak a példa kedvéért), és ezt megfelelően példányosítod (példányosítás után lesz belőle objektum). Ha sok személy van, akkor objektumok tömbje is egy jó megoldás lehet (értsd: egy tömbbel térsz vissza, ebben pedig egy vagy több objektum van).

    (#16451) disy68 :
    Szépen összeszedett válasz! :K

  • fordfairlane

    veterán

    válasz PumpkinSeed #16447 üzenetére

    Maga az MVC csak nagy vonalakban ad iránymutatást arra nézve, hogy miféle nyelvi elemeket keverhetsz a kódodban. Az nagyjából oké, hogy a html a megjelenítéshez kapcsolódik, de az adott nézetnek számos egyéb funkciója is lehet.

    A manapság bevett gyakorlat nagyjából annyi, hogy az oldal szerkezetét leíró html kód többnyire egy template fájlba kerül, amibe csak a legegyszerűbb php, vagy az adott template kezelő nyelvi elemei kerülnek bele. Pl. blokkdefiniálás, iteráció (foreach), beágyazás (include), csak a legegyszerűbb vezérlési szerkezetek. A többi, az adott nézethez kapcsolódó kódrészek mondjuk egy View objectben kaphatnak helyet, ami tisztán csak php utasításokat tartalmaz.

    Én úgy szoktam csinálni, ha az adott rendszerben nincs template kezelő, hogy a nézetben a PHP alternatív nyelvi szintaktikáját használom, ezzel is érzékeltetve, hogy ez egy nézetleíró fájl.

    <?php if(): ?>

    <?php else: ?>

    <?php endif; ?>

    <?php foreach(): ?>

    <?php endforeach; ?>

  • disy68

    aktív tag

    válasz PumpkinSeed #16447 üzenetére

    Az MVC pattern, ahogy a neve is indikálja külön kezeli az adatot (model), megjelenítést (view), és a kettőt összefogó irányítást (control) - csak így egyszerűen megfogalmazva. Ez által adott, hogy ezeket a részeket külön kezelve, jellemzően külön fájlokként fogod megoldani - sok esetben ez több ezer külön fájlt is jelenthet. Persze itt számít az mvc keretrendszer működése, felépítése stb. (lehet, hogy a keretrendszer alapja áll csupán pár ezer kisebb fájlból és a számodra ténylegesen készítendő fájlok száma ehhez képest elenyésző).

    A php / html keverése sokszor alapvetően adja magát, azonban egy template-kezelő működhet úgy is, hogy magában a template fájlban se html, se php kód nem fog szerepelni - persze ezt is php dolgozza fel, ami behelyettesíti a htmlt a template alapján.

    MVC esetében, fontos, hogy a szerepek elkülönüljenek. Ez jelenti azt, hogy a controllereid és modelleid jellemzően nem fognak html kódot tartalmazni, csak php-t, míg a view több, mint valószínű, hogy fog mindkettőt. A lényeg, hogy az adott megvalósítás struktúrája fogja meghatározni, hogy a fájlok mit fognak tartalmazni.
    --
    Amennyiben kevered a html és php kódokat érdemes figyelni az olvashatóságra (a kód karbantartása miatt).

    pl. e helyett:

    <?php
    $menupontok = array('egy','kettő','három','négy');
    echo '<ul>';
    foreach($menupontok as $menupont){
    echo "<li>$menupont</li>";
    }
    echo '</ul>';
    ?>

    könnyebben átlátható ez (alternative syntax használattal):

    <?php $menupontok = array('egy','kettő','három','négy'); ?>
    <ul>
    <?php foreach($menupontok as $menupont): ?>
    <li>
    <?php echo $menupont ?>
    </li>
    <?php endforeach; ?>
    <ul>
    ?>

    --
    Egy függvény visszatérési értéke pedig egy darab "érték". Ez az "érték" tartalmát tekintve lehet nagyjából bármi. Ha neked egy darab szöveges érték kell, akkor egy string, ha kettő vagy több, akkor lehet array, ami tartalmazza a két vagy több stringet. Ha valami bonyolultabb struktúra kell, akkor lehet tömbök, tömbje, vagy akár egy objektum is, ami tövábbi logikát is tartalmazhat (metódusok).

    De először a nyelvi alapokat kell mindenképpen megismerni, és utána érdemes nézelődni a különböző programozási paradigmák, programtervezési eljárások és egyéb best-practice megoldások felé.

  • _ak_

    addikt

    válasz PumpkinSeed #16447 üzenetére

    Nem találkoztam sehol, semmi iránymutató értékekkel, szóval szerintem ez nem ennyire konkrét.
    Persze törekedni kell a különböző logikák szétválasztására és legfőképp a kódismétlés kerülésére, de ha aránytalanul több munkával járna a szétválasztás, akkor elfogadható.

    Nagyjából én így vettem le az elméletet, de egyrészt gyakorlatom alig, másrészt szerintem a project típusától is változhat.

    Aztán remélem valaki kijavít, hogy ha hülyeséget mondtam. :R

  • DNReNTi

    őstag

    válasz PumpkinSeed #16447 üzenetére

    nagy probléma, ha néhány helyen a HTML részben is vannak PHP kódrészletek?
    Én ezt nem értem. :D Ha behúzod a PHP-t külső fájlból akkor is lesz php a HTML-ben. (Illetve a pontosság kedvéért HTML lesz a PHP-ban.) Szóval: wat? :D

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

Hirdetés