Oprettet tor. d. 27. august 2009 kl. 22:57:57

sanderg
sanderg (10.395 point. Point ude: 200)

Models i MVC

Hey alle,

Som sagt har jeg smidt et indlæg om MVC i PHP for 20 dage siden - og jeg synes jeg er kommet længere. Jeg har kodet et lille MVC framework udfra denne her guide: http://anantgarg.com/ (...)

Her har jeg så brugt metoden i url: /controller/action/query/string/her, som fungerer fint og godt. Har også downloadet ZendFramework, og lavet en lille test med det, hvor jeg har 3 sider: en forside, om mig side og kontakt side.

Men nu kommer mine spørgsmål til hvad Model er i MVC? Har hørt om "Skinny controllers, fat models", og det lyder fornuftigt - bare ærgeligt jeg ikke helt ved hvad Model i MVC er. Det lyder jo meget voldsomt, når Model jo er en vigtig del af MVC. Min teori om Model blev ødelagt, da jeg søgte videre på nettet om det. Jeg troede, som der også står i den tutorial jeg har linket det, at model var en forbindelse mellem databasen og applicationen. Så Model var data'en, som man trækker om fra en database. Men jeg har læst, det også kan være XML, andet data, og noget logik.

Hmm hmm tænker jeg så, og snakker så med en af mine venner om det. Han siger også, at i f.eks. sådan et her eksempel, skal teksten kodes ind i Model:

class Default_IndexController extends Zend_Controller_Action
{
    public function indexAction()
    {
        if($_POST["name"] == "Alexander") $hi = "hej guttermand";
        else $hi = "hej fremmede";
       
        $this->view->hiText = $hi;
    }
}

Lige en test med ZendFrameworket. Men der siger han man ikke skal hardcode det tekst ind i controlleren, men man skal f.eks. sige: $hi = $model["guttermand"] (bare eks.). Så tænker jeg bare: er model så ALT slags data? Hvordan vil I f.eks. mit lille eksempel ovenover? Har forstået hvad view er, og controlleren - men er ærlig talt usikker på Model. Burde jeg lave en model til den controller, der så hedder "Default_Model_Index", og så lave et par variabler 'public $guttermand = "Hej guttermand", $fremmede = "Hej fremmede";' ?

Kort opsummering: hvad er Model i PHP? Det ville være fint hvis I kunne illustrere nogen små koder evt.

Men håber I har lyst til at svare mig - den forvirrede dreng.

Hav en fortsat hyggelig dag.

Skrevet tor. d. 27. august 2009 kl. 23:11:11| #1

arne_v
arne_v (1.005.618 point)
Modellen indeholder alt det (eller er ihvertfald et interface til alt det) som du laver din applikation for.

Formaalet med din app er ikke at outputte HTML (V) eller at processe bruger input (C). Formaalet med din app er at "goere" noget - og det er representeret ved M.

Det kan vaere at gemme i og hente nogle data fra en database, gemme og hente nogle data i nogle XML filer, sende en email, styre noget hardware, kalde en backend via web service, kommunikere med en backend via message queues o.s.v..

Det kan vaere alt muligt. Men har det til faelles at det er det som er aarsag til at du skriver din web app.

Skrevet tor. d. 27. august 2009 kl. 23:19:09| #2

sanderg
sanderg (10.395 point)
Cool arne_v, tak for det hurtige svar. :)

Så ja en mail() vil lande i sin Model f.eks.? Så man har f.eks. en "Model_Mail" til at sende mails med? Så man kan bruge den i sine forskellige controllers?

....
$mail = new Model_Mail();
$mail->to("mail@her.dk");
$mail->message("Hej med dig");
$mail->send();
....

Kan det være et eksempel? Er absolut kørt helt død i Models, så du er velkommen til at "grine" af mig, hvis det ser helt dumt ud det jeg laver lige pt. - hehe ;)

Men igen - her får man mikset sin email adresse ind i controlleren igen i mit eksempel. Skal man så også have sådanne informationer stående i en anden model?

.... controller index action
$mail = new Model_Mail();
$info = new Model_Info();

$mail->to($info->mail);
$mail->message($_POST["msg"]);
$mail->send();
....

Tak for dit svar.

Skrevet fre. d. 28. august 2009 kl. 17:25:24| #3

arne_v
arne_v (1.005.618 point)
Om du skal have en info eller ej må afhænge lidt af om det er noget der giver mening eller ej.

Det kan jeg ikke se udfra dit eksempel.

Skrevet lør. d. 29. august 2009 kl. 19:58:37| #4

sanderg
sanderg (10.395 point)
Men jeg bør aldrig "hardcode" den e-mail ind i controlleren, vel?

Skrevet man. d. 31. august 2009 kl. 14:48:35| #5

arne_v
arne_v (1.005.618 point)
Hvis du mener mail adressen, saa var det nok bedst at have den i en konfigurations fil.

Skrevet tor. d. 03. september 2009 kl. 23:12:05| #6

sanderg
sanderg (10.395 point)
Okay super. :) Smid lige et svar, tak. Og tak for hjælpen!

Skrevet tor. d. 03. september 2009 kl. 23:14:26| #7

sanderg
sanderg (10.395 point)
Hovsa - har jo ikke angivet point. Hvordan gør vi så du kan få lidt points alligevel?

Skrevet tor. d. 03. september 2009 kl. 23:16:44| #8

arne_v
arne_v (1.005.618 point)
jeg skal smide et svar

Skrevet tor. d. 03. september 2009 kl. 23:18:04| #9

sanderg
sanderg (10.395 point)
Kunne ikke give dig nogen points. :(

Skrevet tor. d. 03. september 2009 kl. 23:21:49| #10

arne_v
arne_v (1.005.618 point)
Paa en eller anden maade var point antal sat til 0.

Skrevet tor. d. 03. september 2009 kl. 23:22:02| #11

arne_v
arne_v (1.005.618 point)
altsaa for spoergsmaalet

Skrevet tor. d. 03. september 2009 kl. 23:28:10| #12

sanderg
sanderg (10.395 point)
Ja ved det. Hmm. Kan man sende points?

Skrevet fre. d. 04. september 2009 kl. 00:29:23| #13

arne_v
arne_v (1.005.618 point)
http://www.eksperten.dk/ (...)

er tidligere anvendt i ligneden tilfaelde.

Skrevet fre. d. 04. september 2009 kl. 00:29:41| #14

arne_v
arne_v (1.005.618 point)
... lignende ...

Skrevet lør. d. 05. september 2009 kl. 00:38:48| #15

sanderg
sanderg (10.395 point)
Hej igen, glemte lige at give dig linket til det nye post. http://www.eksperten.dk/ (...)

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   

   

Seneste spørgsmål

Ville ikke tildele at upload det til database eller komme...

Oprettet den 10. februar 2012 kl. 21.23
tobrukDk giver 15 point for svar | Giv et svar »

HTTP Post XML og modtag svar

Oprettet den 10. februar 2012 kl. 17.55
mrkaynex giver 200 point for svar | Giv et svar »

Inspion Economy søger en dygtig programmør, som kan...

Oprettet den 10. februar 2012 kl. 16.09
Kathja giver 15 point for svar | Giv et svar »

Seneste guides

Installer win 7
Den gode bruger


   




Tips & Tricks fra PC World

Teaser billede

Her er fem sjove danske websider du skal kende

Trænger dine lattermuskler til en omgang fitness på dansk? Vi viser vej til fem websider fyldt med humor og vanvittig satire.


Anmeldelser fra PC World

Teaser billede

Test: Denne super-tablet er iPads hårdeste konkurrent

Eee Pad Transformer Prime er frygtindgydende med sin quadcore processor og evne til at trylle sig om til bærbar. Apple bør kigge i bagspejlet, for Asus' tablet-pc kommer buldrende - og gør det...


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Nu kan du snart hente Windows 8

Den nye offentlige betaversion af Windows 8 er klar i denne måned.


Nyheder fra Computerworld

Teaser billede

Måske snart slut med Androids helt store problem

Android-platformen har længe været plaget af et særligt problem. Men måske er problemet nu ved at være elimineret.


Kurser
Samarbejdspartnere

Udgiver · © 2012 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger