Ny artikel: Introduktion av MVC i PHP

PHPportalen Forum Index » Diskutera webbutveckling
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Malte
in memoriam 1



Medlem i: 6369 dagar
Från: Tingsryd
Status: Offline



#474671
Inlägg Skrivet: 2007-04-01 13:47      Ämne: Ny artikel: Introduktion av MVC i PHP Citera

Introduktion av MVC i PHP

Kommentarer kan skrivas i denna tråd.
 

_________________
Funktion är vackert
Till toppen på sidan
Visa användarprofil Besök användarens hemsida
devnull
Inaktiverad



Medlem i: 4530 dagar

Status: Offline



#474704
Inlägg Skrivet: 2007-04-01 15:08      Ämne: Citera

Bra artikel, texten håller sig verkligen till sin sak och spårar inte av. Dock tycker jag exemplet är alldeles för lätt och jag tror inte det ger många en förklaring om hur det används praktiskt.

Edit: Samt att jag (efter ha läst exemplet igen) tycker det är lite fel I Controller-klassen, och hur den avänds. Antingen så har man en controller per "action", dvs. en för Addition, en för Subtraktion, etc. eller så har man en metod per "action" i i varje kontroller. Att slänga in allting i __construct käns...... fel.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Re-JeeP



Medlem i: 5135 dagar
Från: Kullavik
Status: Offline



#474710
Inlägg Skrivet: 2007-04-01 15:40      Ämne: Citera

devnull skrev:
Bra artikel, texten håller sig verkligen till sin sak och spårar inte av. Dock tycker jag exemplet är alldeles för lätt och jag tror inte det ger många en förklaring om hur det används praktiskt.

Edit: Samt att jag (efter ha läst exemplet igen) tycker det är lite fel I Controller-klassen, och hur den avänds. Antingen så har man en controller per "action", dvs. en för Addition, en för Subtraktion, etc. eller så har man en metod per "action" i i varje kontroller. Att slänga in allting i __construct käns...... fel.

Hej!

Jag tycker att det är bra med ett såpass enkelt exempel. Ett för svårt exempel gör bara att man lägger hjärnkraft på annat runt omkring att lära sig MVC.

Angående Controller...
En Controller per "action" får du gärna motivera. Om man gör t.ex. en miniräknare eller kalender blir det lite overkill med en Controller per "action".

Att ha metoder istället hade kunnat vara en lösning. I detta fallet tycker jag också att det hade varit onödigt men för ett lite större exempel där mer uträkningar för varje "action" hade skett så visst. Då kan jag hålla med om att det är en bra lösning.

Med metoder istället:
PHP:
1:
<?php
2:
 
3:
// Detta är våran kontroller.
4:
class calController
5:
{
6:
   // Referens till vyn.
7:
   private $cView;
8:
   
9:
   // Referens till modellen
10:
   private $cModel;
11:
   
12:
   // Konstruktor med vyn, modellen och värdet på $_GET som parametrar.
13:
   public function __construct()
14:
   {
15:
      // Skapar ett objekt av modellen
16:
      $this->cModel = new calModel();
17:
 
18:
      // Skapar ett objekt av vyn
19:
      $this->cView = new calView($this->cModel);
20:
      
21:
      // Kollar värdet på $_GET['op'] och väljer operator utifrån det.
22:
      if($_GET['op'] == 'add') {
23:
         $this->opAdd();
24:
      } else if($_GET['op'] == 'sub') {
25:
         $this->opSub();
26:
      } else if($_GET['op'] == 'mul') {
27:
         $this->opMul();
28:
      } else if($_GET['op'] == 'div') {
29:
         $this->opDiv();
30:
      } else {
31:
         $_GET['op'] = 'op';
32:
      }
33:
      
34:
      // Sätter operatorn.
35:
      $this->cModel->setOp($_GET['op']);
36:
      
37:
      // Uppdaterar vyn.
38:
      $this->cView->display();
39:
   }
40:
   
41:
   public function opAdd()
42:
   {
43:
      $this->cModel->add();
44:
   }
45:
   
46:
   public function opSub()
47:
   {
48:
      $this->cModel->sub();
49:
   }
50:
   
51:
   public function opMul()
52:
   {
53:
      $this->cModel->mul();
54:
   }
55:
   
56:
   public function opDiv()
57:
   {
58:
      $this->cModel->div();
59:
   }
60:
   
61:
   public function opUnknown()
62:
   {
63:
      $this->cModel->div();
64:
   }
65:
}
66:
 
67:
?>
 

_________________
Gräv där du står!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
devnull
Inaktiverad



Medlem i: 4530 dagar

Status: Offline



#474711
Inlägg Skrivet: 2007-04-01 15:47      Ämne: Citera

Re-JeeP skrev:
Jag tycker att det är bra med ett såpass enkelt exempel. Ett för svårt exempel gör bara att man lägger hjärnkraft på annat runt omkring att lära sig MVC.
Saken är den att jag tycker att exemplet är så enkelt att man inte förstår vad som kan göras och bör göras egentligen, det känns lite som att säga:

Detta är php:
PHP:
1:
<?php
2:
echo 'hello world';
3:
?>


Re-JeeP skrev:
Angående Controller...
En Controller per "action" får du gärna motivera. Om man gör t.ex. en miniräknare eller kalender blir det lite overkill med en Controller per "action".
För ett sådant här lätt exempel som en miniräknare är MVC helt "overkill" också, vilket även artikelförfattaren demonstrerar.

Att använda en kontroller per action är vanligare vid komplexare siter där du exempelvis skulle kunna ha en Edit-kontroller som är avancerad nog att klara av att presentera ett input/edit-formulär för de flesta typer av formulär du har på din site, vilket gör att du exempelvis slipper skriva en separat News::Edit(); Post::Edit();, etc.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Re-JeeP



Medlem i: 5135 dagar
Från: Kullavik
Status: Offline



#474713
Inlägg Skrivet: 2007-04-01 15:57      Ämne: Citera

devnull skrev:
Re-JeeP skrev:
Jag tycker att det är bra med ett såpass enkelt exempel. Ett för svårt exempel gör bara att man lägger hjärnkraft på annat runt omkring att lära sig MVC.
Saken är den att jag tycker att exemplet är så enkelt att man inte förstår vad som kan göras och bör göras egentligen, det känns lite som att säga:

Detta är php:
PHP:
1:
<?php
2:
echo 'hello world';
3:
?>

Håller inte med dig... Om du vill lära dig PHP så vill du säkert först se en kod som inte är mer avancerad än din och sen trappa upp det med tiden.

devnull skrev:
Re-JeeP skrev:
Angående Controller...
En Controller per "action" får du gärna motivera. Om man gör t.ex. en miniräknare eller kalender blir det lite overkill med en Controller per "action".
För ett sådant här lätt exempel som en miniräknare är MVC helt "overkill" också, vilket även artikelförfattaren demonstrerar.

Jag som är författaren... Razz

Med miniräknare menar jag inte den i exemplet. Utan snarare en avancerad med alla siffror med osv...

devnull skrev:
Att använda en kontroller per action är vanligare vid komplexare siter där du exempelvis skulle kunna ha en Edit-kontroller som är avancerad nog att klara av att presentera ett input/edit-formulär för de flesta typer av formulär du har på din site, vilket gör att du exempelvis slipper skriva en separat News::Edit(); Post::Edit();, etc.

Okej! Då förstår jag vad du menar med en Controller per "action" och tycker att ditt påstående stämmer bra.
 

_________________
Gräv där du står!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Spiroo



Medlem i: 5044 dagar

Status: Offline



#474795
Inlägg Skrivet: 2007-04-01 20:50      Ämne: Citera

Jag tycker att artikeln är bra skriven och tar med de mest generella bitarna och poängen med MVC. Men jag måste säga att jag blev riktigt besviken när du tar en miniräknare som exempel, vilket nog inte många känner igen sig i. Om du frågar mig skulle jag vilja se ett exempel hur man kan bygga upp en simpel hemsida/script såsom CMS t ex som går igenom t ex index.php för att exekvera rätt sida med rätt innehåll med hjälp av MVC-modellen. Det är det mest "vardagliga" en programmerare använder sig av MVC tror jag. får säkert äta upp att jag sa det Razz. En intressant sak jag skulle vilja förstå bättre är hur man bör/kan använda sig utav Frontcontroller och PageController så att de fungerar bra ihop.
Hursomhelst var det riktigt bra att du tog initiativet att skriva en artikeln om MVC, uppskattas.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Re-JeeP



Medlem i: 5135 dagar
Från: Kullavik
Status: Offline



#474813
Inlägg Skrivet: 2007-04-01 21:34      Ämne: Citera

Spiroo skrev:
Jag tycker att artikeln är bra skriven och tar med de mest generella bitarna och poängen med MVC. Men jag måste säga att jag blev riktigt besviken när du tar en miniräknare som exempel, vilket nog inte många känner igen sig i. Om du frågar mig skulle jag vilja se ett exempel hur man kan bygga upp en simpel hemsida/script såsom CMS t ex som går igenom t ex index.php för att exekvera rätt sida med rätt innehåll med hjälp av MVC-modellen. Det är det mest "vardagliga" en programmerare använder sig av MVC tror jag. får säkert äta upp att jag sa det Razz. En intressant sak jag skulle vilja förstå bättre är hur man bör/kan använda sig utav Frontcontroller och PageController så att de fungerar bra ihop.
Hursomhelst var det riktigt bra att du tog initiativet att skriva en artikeln om MVC, uppskattas.

Exemplet verkar inte vara lika omtyckt som det andra... Laughing

Jag känner fortfarande inte att det är ett dåligt exempel. Det är en introduktion och därför ville jag göra ett så enkelt exempel som möjligt. Min tanke med exemplet är att läsaren ska förstå hur och varför man ska separera funktionalitet och design mer än hur man kan använda MVC i praktiken.
Jag tror att min introduktion är en bra början för att förstå grundtanken med uppdelningen. En fortsättning med ett mer avancerat och mer "MVC-anpassat" exempel är dock lämpligt när man förstår min introduktion.
 

_________________
Gräv där du står!
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
snichme



Medlem i: 6334 dagar
Från: Söderköping
Status: Offline



#474838
Inlägg Skrivet: 2007-04-01 23:14      Ämne: Citera

Jag tycker själv att denna artikel är mycket bra om MVC.
Det är den jag har använt för att lära mig hur de funkar..
http://www.phpit.net/article/simple-mvc-php5/
 

_________________
Webbdesign i Tid Söderköping
http://www.wbit.se/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida Yahoo Messenger MSN Messenger ICQ-nummer
md2perpe
Ex-Moderator



Medlem i: 6025 dagar
Från: Hallonbergen, Kungsbodarna
Status: Offline



#474842
Inlägg Skrivet: 2007-04-01 23:40      Ämne: Citera

Sida 3, stavningsfel: "omständigt" skall vara "omständligt".
 

_________________
6 + sqrt(64) = 10
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Mr.DvD



Medlem i: 4686 dagar
Från: Umeå
Status: Offline



#476332
Inlägg Skrivet: 2007-04-06 13:50      Ämne: Citera

Hur används det i praktiken då?

Säg att man ska bygga en liten site, t.ex blogg där man kan lägga till sina inlägg o ladda upp bilder samt ha ett kommentarsystem.

(första exemplet jag kom på)

Hur skulle strukturen se ut då? (Någon kanske orkar rita).
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Oxymoron
Ex-Moderator



Medlem i: 5947 dagar
Från: Uppsala
Status: Offline



#477837
Inlägg Skrivet: 2007-04-11 02:33      Ämne: Citera

Helt klart ett bra initiativ. Finns väldigt lite svensk litteratur som förordar etablerade design patterns. Men...

Jag har inte orkat läsa artikeln (känns som det är mycket text för väldigt lite?), men jag har läst igenom koden och tycker inte att det är något vidare exempel. Ingen har problem med att förstå att mvc består av tre delar, och det råder inte heller någon brist på triviala exempel. Det som folk kör fast i är när de ska omsätta koncepten i praktiken. Då uppkommer en massa frågor om var man ska placera vad, och den här typen av introduktion besvarar helt enkelt inte dessa.

Ur ett rent pedagogiskt perspektiv så saknar exemplet verklighetsanknytning, vilket aldrig är bra. PHP används i 95% av fallen för att utvecka databasapplikationer. För någon som har koll på grunderna i php och vill börja titta lite på oop är det förmodligen inte alls uppenbart vart och hur databasen passar in i bilden. Den här typen av förenklade demon fungerar utmärkt när man ska demonstrera ett koncept för erfarna programmerare, men i det här fallet är det en annan målgrupp.
 

_________________
http://emilhernvall.github.io/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
golding



Medlem i: 5101 dagar

Status: Offline



#485896
Inlägg Skrivet: 2007-05-07 13:52      Ämne: Citera

Tjena...

Jag har läst artikeln och förstår hur jag ska dela upp min kod i dom olika delarna.
Sen tycker jag lite som Oxymoron att man inte får riktig koll på hur man ska använda det "på riktigt".

Det jag inte förstår hur jag ska lösa är det kända header / output problemet.
Säg att jag har några olika komponenter på min sida. Då skapar jag i index-filen Controller'n till dessa. Controllern skapar sen en Model och en View.
I några av mina Controller's kan det hända att en header skickas.
Hur ska jag då lösa det eftersom jag vill skapa mina View's i body-taggen och då kan jag inte skicka en header?
Jag kan ju lösa det genom att lägga en ob_start i början av index-filen, men det känns fel.

Jag gjorde ett inlägg om det där det finns några lösningar men jag tycker ingen av dom är speciellt bra.
http://phpportalen.net/viewtopic.php?t=81760

Finns det något standard sätt att lösa det på? Någon som har lust att ge en förklaring?
 

_________________
Gone fishing
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Oxymoron
Ex-Moderator



Medlem i: 5947 dagar
Från: Uppsala
Status: Offline



#485899
Inlägg Skrivet: 2007-05-07 14:19      Ämne: Citera

Det är inget fel på att lägga ob_start() i index-filen.
 

_________________
http://emilhernvall.github.io/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
golding



Medlem i: 5101 dagar

Status: Offline



#485904
Inlägg Skrivet: 2007-05-07 14:33      Ämne: Citera

Oxymoron skrev:
Det är inget fel på att lägga ob_start() i index-filen.

Jasså?

Det tycker inte jag är någon bra lösning...

En sida med många besökare som har ob_start() i index-filen kommer behöva en fet server med gott om minne...
 

_________________
Gone fishing
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Oxymoron
Ex-Moderator



Medlem i: 5947 dagar
Från: Uppsala
Status: Offline



#485953
Inlägg Skrivet: 2007-05-07 16:51      Ämne: Citera

Uhm. Nej... Outputbuffering är bland det bästa man kan göra ur prestandasynpunkt. Att belasta nätverksstacken med uppdraget att hela tiden flusha bufferten istället för att skicka all output i ett enda stort paket är betydligt mer krävande för servern än vad det är att buffra utdatan. Flaskhalsarna ligger någon helt annan stans.

För att underbygga det kan vi tänka oss följande. En belastad server hanterar 500 samtidiga connections (absurt mycket. händer inte i praktiken). Vidare så hanterar den enbart väldigt stora sidor á 50kb/styck. 500*50 = 25000kb = 25mb. Ja, jävlar vad mycket minne det drar.

Faktum är att jag inte bara rekommenderar att man använder en outputbuffer, utan även att man komprimerar all utdata. Den vanligaste siffran man ser säger att sådan komprimering kostar ca 5% av cpu:n, men processorkraft är billigare än bandbredd och det förbättrar användarupplevelsen påtagligt, så det är helt klart värt det.
 

_________________
http://emilhernvall.github.io/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2  Nästa
PHPportalen Forum Index » Diskutera webbutveckling
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
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