Introduktion av MVC i PHP

Tillvägagångsätt

Hur går man då tillväga när man designar en sida i MVC som har mer än en komponent? Och hur binder man ihop dom olika komponenterna?

Detta är oftast den svåraste biten. Ett bra sätt är att använda sig av UML (Unified Modeling Language). UML är ett objektorienterat generellt språk för modellering av alla typer av system (citat wikipedia).
Det första man gör är att ta reda på vilka olika komponenter man kommer att ha på sin sida. Det kan vara en nyhets del, en meny, en statusbar, osv...
Man tar sen fram papper och penna och ritar ett UML diagram över komponenterna och alla kopplingar mellan dom. När man känner att man har en bra struktur är det dags för att dela in det i MVC delarna. Viktigt är nu att man inte bara delar upp alla komponenter i MVC samtidigt, utan man tar en komponent i taget och ritar ut dom nya kopplingarna. Detta gör man tills man gjort alla komponenter.
Om man inte har designat alldeles fel borde man få en bild över hur det hela kommer att se ut.
I stort sett kommer varje del i UML-diagrammet vara en klass. För varje klass måste man nu ta reda vilka instansvariabler och funktioner man ska ha.
Ett bra sätt för att ta reda på det är att använda "use cases". Ett use case är en icke detaljerad beskrivning av vad en användare kan göra på sidan. I exemplet ovan hade de olika use casen kunnat se ut såhär:

1. Användaren går in på sidan.
2. Användaren trycker på addition.
3. Användaren trycker på subtraktion.
4. Användaren trycker på multiplikation.
5. Användaren trycker på division.

Man ska egentligen inte gå in så mycket på detaljer som att användaren klickar på en knapp men i det här lilla exemplet är det okej.
Man går sedan igenom alla use casen och fyller under tiden i vad man kommer att behöva för instanser och funktioner i klasserna.

För det andra use caset hade man kunnat resonera såhär:
index.php laddas. Här måste vi skapa objekt av klasserna. View måste ha kunskap om Model så vi skickar med ett Model objekt som argument. Controller måste ha kunskap om både View och Model så vi skickar med objekt av båda som argument. Controller måste veta att användaren klickade på "addition" så vi skickar med även med $_GET variabeln som argument.
Controller måste nu skicka information till Model om att göra uträkningen med operatorn addition. Vi måste alltså ha en metod som sätter den nya operatorn till addition. Vi skapar funktionen setOp(). Vi skapar även instansvariabeln op för att kunna spara vilken operator som ska användas.
Vi måste ha en funktion som räknar ut det nya resultatet med operatorn addition. Vi skapar funktionen add(). add() måste komma åt dom båda talen och även lagra resultatet. Vi skapar instansvariablerna a, b och res.
Nu måste vi säga till View att uppdatera sig. Detta gör vi genom att skapa en funktionen display() i View. Nu måste View kunna hämta informationen från Model. Den behöver hämta värdet på första talet, andra talet, resultatet och operatorn. Vi skapar funktionerna getA(), getB(), getRes() och getOp() i Model. Nu visas uträkningen med operatorn addition. Vi är nu klara med vårat andra use case.

Detta gör man med alla use case och när man är klar har man förhoppningsvis fått ihop det mesta (man glömmer alltid något).

Detta är bara ett av många tillvägagångsätt. Det viktigaste är att man har en tydlig design på det man ska göra innan man börjar koda.

Sida 4 av 5
[ 1 2 3 4 5 ]
Välkommen Anonymous
Logga in
Registrera
Snabblänkar
Markera alla forum som lästa
Skriptarkivet [86 av 97]
Visa nya inlägg
Visa dina inlägg
Visa obesvarade huvudinlägg
Läs vår skola
  Introduktion
  Programmera i webbmiljö
  Installationen i Windows
  Variabler och konstanter
  Vektorer
  Operatorer
  Villkorssatser
  Slingor
Statistik
Registrerade medlemmar: 19806
Inlägg totalt: 719647
Senaste medlem: efms
Online
Besökare just nu: 41,
0 registrerade,
0 dolda och
41 gäster
Besökare som mest var 501 den 2019-05-02 15:53

Våra medlemmar
Inloggade medlemmar
Bra att veta
Förhållningsregler
Trivselregler
phpBB-FAQ
För dig som vill länka
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic