MVC

Programovacie jazyky, rady, poradňa...
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

MVC

Príspevok od používateľa Snacker »

Zdravim,

potreboval by som trosku objasnit v praxi MVC architekturu. Pracujm na jednej aplikacii a chcel by som ju do nej aplikovat. Na oddelenie logiky a prezentacie pouzivam Smarty. Logiku chcem teraz rozdelit do Kontroler, Model a Pohlad. Kontroler si predstavujem ako nieco co uklada do premenneych hodnoty, ktore boli odoslane od uzivatela metodou GET/POST. Dalej hodnota tejto premennej by presunula do Modela a tam by sa tieto udaje spracovali popripade by sa vybrali alebo ulozili hodnoty do SQL.(Model <-> SQL) nakoniec by sa tieto hodnoty presunuli do Pohladu a zobrazili.


Mam dve otazky:
Ci je moj navrh MVC a celej architektury spravny.
Ako v praxi vyzra MVC na jdnoduchom priklade. Nevim si to totiz uplne presne prdstavit resp. neviem ci moje predstavy su spravne :)

Dakujem za odpovde
Prílohy
model.jpg
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

kukni si tentu "tutorial"

http://blackhole.sk/topicnajjednoduchsi ... php-part-1
http://blackhole.sk/topicnajjednoduchsi ... php-part-2

je tam celkom pekne popisane ako všetko funguje a ako čo mas porobit a tiež mas tam už prichystane nejaké funkcie ktore ti aspon urýchlia pracu ..len si to musiš trochu upravit ..
ja som začinal s týmto tutorialom a je to celkom pekne napisane
hmm len namiesto

Kód: Vybrať všetko

$view = new bTemplate(APPROOT . 'templates' . DS);
ty použijes ten Smarty čo je mimochodom asi ta najlepšie čo som použivat
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

Podla ****M N A**** , tvoja interpretacia MVC nie je spravna (opieram sa hlavne o technologie ako swing, wicket, JSF, Spring MVC, kde to chapu tak ako ja).

Model nie je žiadna logika ale len data.
Všetka logika je v kontroleri, binding (prerobenie stringov z formularov do spravnych typov) je sucastou kontrolera
Vascinou sa na to urobi nejaka genericka vrstva (aby si to nemusel pisat vzdy urobis obecnu vrstvu ktoru potom volas)

View je renderer ktory ti spracuje data (model) do danneho tvaru (HtML, XML, PDF, Excel ....)

Model teda služi ako jednotny format dat, pre jeden alebo viacero view .

Teda logika je v kontroleri a nie v modeli, model su len data
V java bola kedisy diskusia o tom ci to robit (davat pristup k logike do view) , a vseobecna zhoda bola v tom ze je to maximalna prasárna.
ale ludia od php maju ine chutky .... vpodstate tym obchadzas vyznam smartov, pretoze tie maju len zobrazovat a nie vykonavat nejaku logiku.

Kontroler ma za ulohu binding, bussines logika =>vytvorenie, doplenie modelu, a určiť ktorx view sa ma na to použiť (toto sa dnes uz tak nerobi, vascinou nastavenie tohto sa priamo natvrdo nenakoduje ale pouzije sa nejaka externa konfiguracia)
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

:lol: :D xixi neviem ako vy ale ja som sa logicky modelovo zabindoval :) ...
krasne vysvetlenie inak :wink:
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

Príspevok od používateľa Snacker »

Dakujem za vysvetlenie aj za tutorial. Uz mi je to trosku jasnejsie. Cize Kontroler by v mojej aplikacii predstavoval riadic udalosti, teda napr. ked sa nieco posle cez form. Model reprezentuje informaciem cize by mal byt uzko spaty s databazou. Neni mi presne jasny Pohlad, ktory by mal data z modelu predstavovat do podoby vhodnej pre uzivatela, cize tam mozes zahrnut aj HTML a CSS ?


1. Uzivatel napise meno do text input -> uzivatelske rozhranie
2. Data sa odoslu metodu post a tu uz caka kontroler a ten tie data prevezme a uluzi ich do premennej, pripadne mozne overit ci su validne -> Kontroler
3. Data sa predaju modelu a ten tuto informaciu ulozi na server, zaktualizuje informaciu alebo nieco podobne -> Model
4. Pohlad si tuto informaciu vezme z txt suboru a vlozi ju do odstavca<p> a zobrazi -> Pohlad

Kde som spravil chybu? Kde je zahrnute overovanie dat, Kontroler alebo Model?
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Snacker napísal:Dakujem za vysvetlenie aj za tutorial. Uz mi je to trosku jasnejsie. Cize Kontroler by v mojej aplikacii predstavoval riadic udalosti, teda napr. ked sa nieco posle cez form. Model reprezentuje informaciem cize by mal byt uzko spaty s databazou. Neni mi presne jasny Pohlad, ktory by mal data z modelu predstavovat do podoby vhodnej pre uzivatela, cize tam mozes zahrnut aj HTML a CSS ?


1. Uzivatel napise meno do text input -> uzivatelske rozhranie
2. Data sa odoslu metodu post a tu uz caka kontroler a ten tie data prevezme a uluzi ich do premennej, pripadne mozne overit ci su validne -> Kontroler
3. Data sa predaju modelu a ten tuto informaciu ulozi na server, zaktualizuje informaciu alebo nieco podobne -> Model
4. Pohlad si tuto informaciu vezme z txt suboru a vlozi ju do odstavca<p> a zobrazi -> Pohlad

Kde som spravil chybu? Kde je zahrnute overovanie dat, Kontroler alebo Model?
1.takže pošleš nejake udaje v url + mozno v poste to je jedno vzdy komunikuješ cez URL
2. Url pride na server cez index kde bude odoslana na nejaký parser ,ktory podla nejakej predlohy zisti o ake ide vlastne data a či su validne pre dalsie spracovanie ,takto rozžute udaje pošle na nejaký Smernik
3. Smernik si vezme potrebme udaje a podla toho pospušta pracovne modely
4. Pracovne modely dokoncia kontrolu zvyšných dat a stravia aj posledne zvyšky ako je trebars POST,ulozia čo treba do DB,aktualizuju atd atd..... A pripravia potrebne navratove udaje pre Smarty
5. Spusti sa smarty ktory vypluje vyslednu stranku :)

už je to jasnejšie ?? proste zacni to robit a uvidiš ako do toho hupneš ani nezbadaš ako ;)

....ok už su 3hodiny preč idem ja spať ..
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

Tu je nejake info z wiki: http://en.wikipedia.org/wiki/Model%E2%8 ... controller


Chcem sa vsak opytat k danemu obrazku, ktore na wiki je. Co predstavuju plne a ciarkovane sipky?
Prílohy
wiki mvc
wiki mvc
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

ppt napísal:Tu je nejake info z wiki: http://en.wikipedia.org/wiki/Model%E2%8 ... controller


Chcem sa vsak opytat k danemu obrazku, ktore na wiki je. Co predstavuju plne a ciarkovane sipky?
ak je to niečo ako v jave ..tak potom ako su na sebe závisle a poprepájane
ppt
Darca
Darca
Používateľov profilový obrázok
Príspevky: 1920
Registrovaný: 27 máj 2006, 11:24
Kontaktovať používateľa:

Príspevok od používateľa ppt »

Tak to je hadam jasne, ze jednotlive "ciary" predstavuju zavislost. Ale aku? :)
Snacker
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 362
Registrovaný: 08 jún 2009, 22:42
Kontaktovať používateľa:

Príspevok od používateľa Snacker »

už je to jasnejšie ?? proste zacni to robit a uvidiš ako do toho hupneš ani nezbadaš ako
ano, len somchcel predtym nez zacnem nieco robit dobre pochopit teoriu lebo som cital, ze velmi vela aplikacii si ju chybne vysvetluje a tak trosku "po svojom"
Tak to je hadam jasne, ze jednotlive "ciary" predstavuju zavislost. Ale aku?
No je to nejake cudne. Ja nerozumiem ani tym hrubym. :lol: Takze tiez by potesilo vysvetlenie

Dobry clanok:
http://zdrojak.root.cz/clanky/uvod-do-architektury-mvc/
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Z tej stranky čo si tu dal
Jak naznačují šipky, v architektuře MVC v principu existují pouze dvě přímé vazby:
Controller má přímý odkaz na Model, aby mohl upravit jeho data
View má přímý odkaz na Model, aby mohl jeho data zobrazit

Všimněte si, že to je vše. Žádné další vazby nejsou na této úrovni podstatné, ačkoliv v praxi a v závislosti na konkrétní variaci MVC je ještě poměrně častá vazba mezi Controllerem a View (někdy jednosměrná, někdy obousměrná).

Co naopak nikdy nesmí existovat, je přímá vazba Modelu na ostatní dvě komponenty. V některých schématech uvidíte „nepřímou vazbu“ z Modelu na View, čímž se má na mysli, že když se data Modelu změní, příslušná View jsou upozorněna nějakým notifikačním mechanismem (např. pomocí vzoru Observer). V žádném případě však Model nemůže držet přímý odkaz na View nebo na Controller – to by byla hrubá chyba v návrhu aplikace.
čomu z toho nechápete ?? dôležite je aby ste sa nevracali z modelu na controler alebo view :!:
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

Snacker napísal: 3. Data sa predaju modelu a ten tuto informaciu ulozi na server, zaktualizuje informaciu alebo nieco podobne -> Model
Model su len data = pole, zoznam, hashmapa, data nijako memodifikuje, nepristupuje, ziaden pristup do databazy (to vstko ma na starsti kontroller) model su LEN data, ziadna logika, ziadne sql, ....
xivo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 752
Registrovaný: 27 jún 2005, 22:49
Bydlisko: Slovensko
Kontaktovať používateľa:

Príspevok od používateľa xivo »

pheo napísal:Model su len data = pole, zoznam, hashmapa, data nijako memodifikuje, nepristupuje, ziaden pristup do databazy (to vstko ma na starsti kontroller) model su LEN data, ziadna logika, ziadne sql, ....
Peto, tu s tebou nesúhlasím ... model obsahuje taktiez aj logiku ktorá nad týmito dátami pracuje controller je iba na tzv "application flow" teda riadi aplikaciu ale nezasahuje do menežmentu dát, to má nastarosti model.

http://mikebernat.com/blog/MVC_-_Fat_Mo ... ntrollers_
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

už ani neviem či vobec odpovedame na zadanu otázku :) ..
xixi sama teoria a teoria a on sa nas len pital na ten jeho obrazok a či mu tu nevieme okazat na jednoduchom priklade ako to ma vyzerat :P ..
lebo tieto teoreticke žvasty okolo prace ma strašne unavuju a skor človeka domylia ako mu pomozu ,su to všetko iba bezduch slova :).. a nema tu preto zmysel si merat pindury,kto najde niečo ine na nete ako ten predchadzajuci napisal,čo stranka to ine tvrdenia.
A prečo???
lebo každy kto pisal tie članky si tam vložil niečo to svoje!!! niečo čo mu nejako viacej vyhovovalo alebo sa mu zdalo že to bude prehladnejšie, či efektivnejšie

.... nehc zasne kodit podla tej stranky čo som tu dal alebo nech si to aspon prečita a hned mu bude jasne čo a ako ma vyzerat(podla autora toho kodu) a nasledne prijme nejake opatrenia alebo vylepšenia

:D GL
xivo
Light Professional
Light Professional
Používateľov profilový obrázok
Príspevky: 752
Registrovaný: 27 jún 2005, 22:49
Bydlisko: Slovensko
Kontaktovať používateľa:

Príspevok od používateľa xivo »

TGiJack napísal: ...
Duchaplná odpoveď ....
Nikto si tu nič nedokazuje, ide iba o to aby sme si ujasnili čo MVC znamená, Design paterny je zaujimava oblast, ktora dopomaha flexibilnému návrhu obrovských aplikácii. Ak ich chces spravne pouzivat, musis im chapt ...

Ja som sa odvolal na ten článok lebo som ho náhodne vygoogli to je fakt ale MVC pattern denne používam keďže programujem v Zend Frameworku. V podstate som napísal ako ho použivam ja a ako by sa podla mna mal používať , možno sa mylim a používam ho zle, preto som to tu podotkol, lebo sa mozno naucim nieco nove ...

ak sa o tuto problematiku nezaujimas, tak sem aspoň nežvaň sprostosti ....
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

xivo napísal:Peto, tu s tebou nesúhlasím ... model obsahuje taktiez aj logiku ktorá nad týmito dátami pracuje controller je iba na tzv "application flow" teda riadi aplikaciu ale nezasahuje do menežmentu dát, to má nastarosti model.

http://mikebernat.com/blog/MVC_-_Fat_Mo ... ntrollers_
Na to ti mozem povedat asi takto: v jave je asi inak chapane ako v php, povedzme v springu (v ktorom pisem zas ja) sa o flow stara samostana knižnica, ktora si flow nacitava z xml. Kontrolery su tu chapane ako nositelia vsetkej vykonnej logiky a model su len data. Dvôd toho vsetkeho je prave nepchat logiku do modelu aby view nam moznost pristupuk logike. view iba zobrazovala uz pripravene data, nijako ich neupravovala, nevytahovala, proste len zobrazovala. (v podstate len nieco take ako php smarty)
Sumar sumarom sa zda ze MVC sa da chapat rozne ....
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

tak MVC tak isto použivam .. a každy to chape trochu inak .. proste si to treba vyskušat ..najlepši škola je život :wink:

pheo: uplne stebou suhlasim :)
Napísať odpoveď