Introduktion av MVC i PHP

Detaljerat flödesschema

Nedan beskrivs ett mer detaljerat flöde än ovan. Scenariot är att man går in på sidan och trycker på länken "addition".

När man besöker sidan kommer index.php att laddas. index.php laddar in de andra filerna in och skapar objekt av klasserna.
När objekten skapas skickas ett Model objekt till View. View måste ju ha kunskap om Model för att kunna hämta sin data. När Controller skapas skickas det med ett objekt av både Model och View. Controller måste ju ha kunskap om Model för att säga till den att utföra nya beräkningar och måste även ha kunskap om View för att kunna säga till den att uppdatera designen efter vad Model har kommit fram till i de nya beräkningarna. Till Controller skickas det även med en $_GET variabel som innehåller information om vilken länk användaren klickade på. Denna informationen måste Controller ha för att kunna avgöra vad den ska skicka för instruktioner till Model. I detta fall kommer den att innehålla informationen om vilken operation som ska utföras (addition, subtraktion, multiplikation eller division).

När sidan laddas för första gången kommer $_GET inte innehålla något värde (undantag är om man skriver in ett get-värde i url'en med en gång men det bortser vi ifrån här). I Controller kommer då else satsen att uppfyllas och $_GET['op'] kommer att vara en tom sträng. Controller kommer att uppdatera Model med informationen om vilken operator som ska användas. Controller anropar sedan funktionen display() i View som i sin tur uppdaterar designen efter värden från Model. Vi kommer då att få presenterat för oss "100 op 30 = ?". Anledningen till att vi ser värden är för att de har initierats med värden i Model från start.
Vi klickar nu på Addition. Det som händer är att index.php kommer att uppdateras och allt kommer att göras igen på precis samma sätt som innan med skillnaden att $_GET kommer att ha annan information i sig. I detta fallet kommer $_GET['op'] innehålla värdet "add". Denna gång kommer inte else-satsen att köras. Istället kommer Controller att uppdatera Model med den nya operatorn addition. Controller anropar sedan display() i View för att designen ska uppdatera sig med den nya datan från Model. Det vi denna gång kommer att få presenterat är "100 + 30 = 130".

Dom av er som kan OOP men inte MVC förstår säkert flödet med kanske undrar varför göra det så omständigt för sig när man istället kan lösa det på 28 rader.
PHP:
1:
<?php
2:
 
3:
$a 100;
4:
$b 30;
5:
 
6:
if(isset($_GET['op']))
7:
{
8:
    if($_GET['op'] == "add") {
9:
        echo $a." + ".$b." = ".($a + $b);
10:
    } else if($_GET['op'] == "sub") {
11:
        echo $a." - ".$b." = ".($a - $b);
12:
    } else if($_GET['op'] == "mul") {
13:
        echo $a." * ".$b." = ".($a * $b);
14:
    } else if($_GET['op'] == "div") {
15:
        echo $a." / ".$b." = ".($a / $b);
16:
    }
17:
} else {
18:
    echo $a." op ".$b." = ?";
19:
}
20:
 
21:
?>
22:
 
23:
<ul>
24:
    <li><a href='?op=add'>Addition</a></li>
25:
    <li><a href='?op=sub'>Subtraktion</a></li>
26:
    <li><a href='?op=mul'>Multiplikation</a></li>
27:
    <li><a href='?op=div'>Division</a></li>
28:
</ul>

Svaret på detta går inte alltid att motivera. Exemplet vi använt oss av är ju tämligen enkelt så om det var det enda sidan skulle innehålla är det enkla sättet den bästa lösningen. Men om en sida är uppdelad i flera olika
delar och exemplet skulle vara en liten del av sidan skulle en MVC-lösningen vara bättre. Varför? Jo, för att i MVC ska alla grafiska komponenter i ett program eller på en hemsida vara uppdelade i en Model, en View och en Controller.
En stor hemsida har ofta om man inte följer någon bra design modell en enorm index fil vilket gör det svårt att veta vad som är vad i den. En snyggt strukturerad kod enligt MVC gör det helare mycket enklare.

Sida 3 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: 19816
Inlägg totalt: 719723
Senaste medlem: licmarcos
Online
Besökare just nu: 46,
0 registrerade,
0 dolda och
46 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