- Honor 400 Pro - Gép a képben
- Szívós, szép és kitartó az új OnePlus óra
- Samsung Galaxy S23 Ultra - non plus ultra
- Ezzel a mobillal készülhet a 2026-os MWC-re a HMD
- iPhone topik
- Yettel topik
- Apple iPhone Air - almacsutka
- Magisk
- Xiaomi Smart Band 7 - hetedik
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
Ú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! -
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.
-
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.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?
Új hozzászólás Aktív témák
Hirdetés
- Azonnali játékos kérdések órája
- Honor 400 Pro - Gép a képben
- exHWSW - Értünk mindenhez IS
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Szívós, szép és kitartó az új OnePlus óra
- sziku69: Fűzzük össze a szavakat :)
- League of Legends
- Vivaldi (böngésző)
- sziku69: Szólánc.
- További aktív témák...
- ASUS TUF FX505DU - 15,6"FHD IPS 120Hz - Ryzen 7-3750H - 8GB - 512GB - Win11 - GTX 1660 Ti - MAGYAR
- Gamer PC-Számítógép! Csere-Beszámítás! R5 3600 / RX 5700 / 16GB DDR4 / 512GB SSD
- GIGABYTE Z390 AORUS MASTER WiFi Alaplap
- GAMER PC! Ryzen 7800X3D / RTX 5070 Ti / 32GB 6400MHz / B650 WiFi / 1TB Gen4 / 750w GOLD! BeszámítOK
- T14 Gen5 14" FHD+ IPS Ultra 7 165U 16GB 512GB NVMe magyar vbill ujjlolv IR kam gar
- BESZÁMÍTÁS! ASUS H610M i5 12400F 16GB DDR4 1TB SSD RTX 4060 8GB Rampage Shiva Cooler Master 650W
- AKCIÓ! DELL Precision 7540 i7-9850H Quadro T2000 16GB 512GB 1 év garancia
- Samsung Galaxy A40 64GB // Számla+Garancia //
- BESZÁMÍTÁS! Apple Studio Display 27 5K Nanotexturált üveg monitor garanciával hibátlan működéssel
- GYÖNYÖRŰ iPhone 13 mini 128GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3049, 94% Akkumulátor
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest