Waeke Up Shop: Webbshop i OO MVC

PHPportalen Forum Index » Tips och Trix
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2, 3  Nästa
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#707971
Inlägg Skrivet: 2011-05-25 00:12      Ämne: Waeke Up Shop: Webbshop i OO MVC Citera

Som nämnt i tråden http://www.phpportalen.net/viewtopic.php?t=116968 så kommer här grunden till en webbshop. Webbshopen bygger så klart på MVC-ramverket i samma tråd.

Tanken med denna koden är precis som med den andra, att de som vill lära sig lite mer om OO och MVC ska få sig ett rejält exempel på hur detta kan fungera i praktiken. Jag kan inte säga att den är perfekt, men jag är ganska säker på att ni kan lära er av den.

Installation:
Hämta filen:
https://github.com/saurid/UpShop
Packa upp den i din www-root
Skapa en databas i mySQL och kör sql-filen som följer med i filen i phpMyAdmin eller liknande
Lägg in dina uppgifter i "App/config.php"

Med i installationen ligger exempeldata för er att "leka" med.

Admin:
Admin-funktionerna i er lokala installation kommer ni åt dem med länken:
http://[din-installations-mapp]/Admin

Användare: admin@admin.se
Lösenord: admin

Säkerheten inne i admin är mer eller mindre obefintlig. Jag har inte lagt någon energi alls på den, då syftet med shopen (att visa hur man kan använda Up MVC) inte täcker detta.

Senast ändrad av Saurid den 2016-12-08 10:20, ändrad totalt 4 gånger
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Sawny



Medlem i: 3077 dagar

Status: Offline



#708017
Inlägg Skrivet: 2011-05-25 17:19      Ämne: Citera

MVC Fel: Kunde inte ansluta till databasen SQLSTATE[HY000] [2005] Unknown MySQL server host 'waeke-up-shop-113113.mysql.binero.se' (1)
@ http://www.waljefors.se/waeke-up-shop/cart/add/6
Razz
 

_________________
HTML, CSS, PHP, JS
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708023
Inlägg Skrivet: 2011-05-25 18:32      Ämne: Citera

Sawny skrev:
MVC Fel: Kunde inte ansluta till databasen SQLSTATE[HY000] [2005] Unknown MySQL server host 'waeke-up-shop-113113.mysql.binero.se' (1)
@ http://www.waljefors.se/waeke-up-shop/cart/add/6
Razz

Hrmff. Jag skyller på webbhotellet här, det fungerar vanligtvis.
Men jag hade faktiskt lite problem inatt också. Ibland gick det inte att ansluta till databasservern. Inget fel på shoppen i sig, jag lovar! Smile
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
J0NaT0R



Medlem i: 4126 dagar

Status: Offline



#708213
Inlägg Skrivet: 2011-05-29 22:25      Ämne: Citera

Tusen, tusen tack för du tagit dig tid och gjort detta script Smile Något som jag saknat är ett bra exempel på OOP men nu finns det, mkt credit till dig!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708214
Inlägg Skrivet: 2011-05-29 23:07      Ämne: Citera

J0NaT0R skrev:
Tusen, tusen tack för du tagit dig tid och gjort detta script Smile Något som jag saknat är ett bra exempel på OOP men nu finns det, mkt credit till dig!

Det är nog ett bättre exempel på MVC än OOP, då strukturen är så enkel. Inga arv, inga abstrakta klasser, ingen dependency injection eller andra mer avancerade relationer. Men det är nog en bra början. Tack så mycket! Smile
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
J0NaT0R



Medlem i: 4126 dagar

Status: Offline



#708216
Inlägg Skrivet: 2011-05-29 23:12      Ämne: Citera

Ah, okej. Du ser, jag har inte ens koll på vad det är.. alltså välbehövligt Wink hehe.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708218
Inlägg Skrivet: 2011-05-29 23:26      Ämne: Citera

Jo vänta förresten! Order-klassen har ju dependency injection i konstruktorn och har lagrade objekt. Och shipping-klasserna ärver ju faktiskt en abstrakt klass (shipping). Vet inte varför jag glömde bort dem. Jag hade väl tankarna på mitt andra inlägg i huvudet Embarassed

Titta på dem och lär, för all del! Laughing
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
J0NaT0R



Medlem i: 4126 dagar

Status: Offline



#708219
Inlägg Skrivet: 2011-05-29 23:31      Ämne: Citera

Jag tittar på hela scriptet och lär mig, det där är långt över min nivå Razz
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Sawny



Medlem i: 3077 dagar

Status: Offline



#708323
Inlägg Skrivet: 2011-06-01 14:03      Ämne: Citera

Om man skriver <' så köps alla varor upp :p

Kanske är en säkerhets risk?
SQL injections?
 

_________________
HTML, CSS, PHP, JS
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708332
Inlägg Skrivet: 2011-06-01 16:53      Ämne: Citera

Sawny skrev:
Om man skriver <' så köps alla varor upp :p

Kanske är en säkerhets risk?
SQL injections?

Hmmm... Intressant, ska fundera på varför det blir så. Nej, det finns ingen säkerhetsrisk och ingen risk för SQL-injections vad jag vet. Shopen använder PDO och prepared statements.

Du kan nog skriva vad som helst för att få samma sak att hända. Inget speciellt med just de tecknena med andra ord. Men det händer bara om just den varan inte ligger i varukorgen redan. Spännande Wink

EDIT: Har uppdaterat så att det problemet inte uppstår. Istället kommer den att tolka konstiga tecken som 0 (noll) istället. Om användaren dummar sig på det viset, så är det bättre så.
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Peppe L-G



Medlem i: 4340 dagar
Från: Mullsjö
Status: Offline



#708360
Inlägg Skrivet: 2011-06-02 12:31      Ämne: Citera

Grymt snällt av dig att bidra med detta exemplet (och likaså det andra exemplet i andra tråden, såklart)!

En sak jag dock funderar över vad det är för skillnaderna på klasserna i mappen "class" och mappen "model". Är tanken att man i kontroll-klasserna aldrig ska behöva använda sig av klasserna i mappen "class", utan man klasserna i mappen "view" och mappen "model"?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708373
Inlägg Skrivet: 2011-06-02 17:04      Ämne: Citera

Peppe L-G skrev:
En sak jag dock funderar över vad det är för skillnaderna på klasserna i mappen "class" och mappen "model". Är tanken att man i kontroll-klasserna aldrig ska behöva använda sig av klasserna i mappen "class", utan man klasserna i mappen "view" och mappen "model"?

Hehe, jag undrade när jag skulle få den frågan Laughing

Skillnaden är att klasserna i model tillhör datalagret, medan klasserna i class innehåller mer logik och har mer organisatoriska och funktionella egenskaper. I något fall kan det vara lite svårt att dra gränsen mellan dem, men jag valde att göra så här för att lite tydligare visa vad en modell egentligen är.

I ett lite större ramverk så skulle modellerna säkerligen ärva en "base model"och då hade skillnaden upplevts mycket tydligare. Klasserna i class hade då varit dem som inte behövt ärva "base model's" egenskaper.
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Peppe L-G



Medlem i: 4340 dagar
Från: Mullsjö
Status: Offline



#708387
Inlägg Skrivet: 2011-06-02 21:49      Ämne: Citera

Ok, jag tror jag förstår (tro det eller ej Wink).

Men jag har börjat fundera på hur man kan hantera sidnavigering på ett bra sätt, men jag är lite osäker på hur jag ska koppla den till en vy.

Vad är det för något vyn (som ska visa sidlänkar) ska veta? Om vi antar att den bara ska visa länkar till alla sidor upp och ner, då är det lämpligt att vyn får reda på första och sista sidan, och kan resultera i något som ser ut såhär med hjälp av en loop:

KOD:
1:
<a href="länk.php?sida=1">1</a>
2:
<a href="länk.php?sida=2">2</a>
3:
<a href="länk.php?sida=3">3</a>
4:
<a href="länk.php?sida=4">4</a>
5:
<a href="länk.php?sida=5">5</a>
6:
<a href="länk.php?sida=6">6</a>
7:
<a href="länk.php?sida=7">7</a> <!-- Sista sidan -->


Anta istället att vi bara vill visa 2 sidlänkar bakåt och 2 sidlänkar framåt istället för alla sidlänkar. Då kan vi använda samma koncept (att vyn bara vet om första och sista sidan den ska visa):

KOD:
1:
<a href="länk.php?sida=2">2</a>
2:
<a href="länk.php?sida=3">3</a>
3:
<a href="länk.php?sida=4">4</a> <!-- Sida som visas -->
4:
<a href="länk.php?sida=5">5</a>
5:
<a href="länk.php?sida=6">6</a>


Men här är det modellen som säger åt vyn att den ska visa sidorna 2-6, det är inte vyn som har bestämt det (vilket jag tycker den ska göra), men å andra sidan ska man väll sträva efter att vyn inte har stora uträkningar i sig?

Min fråga är enkel, ska modellen bestämma vilka sidlänkar som ska finnas, eller är det vyns uppgift?
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
Saurid
Moderator



Medlem i: 5334 dagar
Från: Karlshamn
Status: Offline



#708417
Inlägg Skrivet: 2011-06-03 18:18      Ämne: Citera

Om vi tänker på vad vi behöver för indata för att skapa en sidnavigering, så lär vi i minsta fall behöva: Totalt antal poster, hur många poster som ska visas och slutligen vilken sida som ska visas.

Antalet poster behöver vi onekligen hjälp av en model för att få reda på. Hur många poster som ska visas kan komma från view, men lika gärna från controllern. Sidan som ska visas hämtar du från URL'en.

Jag skulle nog sätta logiken runt navigeringen i ett eget objekt (som du då lagrar i klass-mappen). Skapa upp objektet med data enligt ovan och skicka hela objektet till view. Alternativt kan du välja att sätta något av variablerna från view om du så vill, tex antal poster per sida.

Sedan får du göra ett snyggt gränssnitt mot objektet som du kan använda i view utan att du behöver mer än en loop och utskrift av variabler.

Så svaret på din fråga får nog vara att det mycket väl kan vara view som bestämmer vilka sidor som ska visas i navigeringen, men den behöver hjälp från andra håll. Smile
 

_________________
waljefors.se :: waeke.se :: GitHub :: SoundCloud
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Makkesk8



Medlem i: 2854 dagar
Från: Polen & danmark
Status: Offline



#712042
Inlägg Skrivet: 2011-08-21 20:00      Ämne: Citera

redan sett en bug.. lägger du till varor i varukorgen så minskas stocken.. det är inte förrens du betalar stocken ska minskas.
 

_________________
http://kz-extreme.net/
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida AIM-adress Yahoo Messenger MSN Messenger
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget Gå till sida 1, 2, 3  Nästa
PHPportalen Forum Index » Tips och Trix
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