Avatar billede aquix Nybegynder
28. juli 2007 - 06:17 Der er 17 kommentarer og
1 løsning

Indkøbskurv - Sessions eller OOP?

Hej eksperter

Jeg har siddet og funderet en smule over hvilke teknikker, der er mest brugbare, funktionsmæssigt og sikkerhedsmæssigt, når det drejer sig om opbygning af indkøbskurve.

Hvad mener I? Hvad taler for/imod at benytte OOP frem for Sessions og omvendt? Ordet er jeres ;)

På forhånd tak.
Avatar billede keysersoze Guru
28. juli 2007 - 09:03 #1
OOP er en måde at tænke på og opbygge sin kode på og sessions er en mulighed man kan bruge inde i sin kode - så at sammenligne det ene med det andet er som at begynde at sammenligne elefanter og bananer; det er to vidt forskellige ting.

Dvs du kan sagtens opbygge selve indkøbskurv som OOP (men selvfølgelig kan du også lade være) - derimod bliver det nok sværere at undvære sessions da du er nødt til at have noget til at genkende din bruger med når du lægger en kundens varer ned i indkøbskurven uanset hvordan du så har valgt at opbygge den.
Avatar billede aquix Nybegynder
28. juli 2007 - 13:14 #2
Okay super, men kan du så forklare fordelen ved at opbygge sin kode i OOP i netop dette tilfælde?
Avatar billede keysersoze Guru
28. juli 2007 - 15:33 #3
at begynde at forklare om OOP kræver nok en hel bog eller to - men meget kort kan siges at en af fordelene er, at man i sin programmering får opbygget nogle objekter, der afspejler virkeligheden. Altså, fx har du et produkt-objekt du kan genbruge på tværs af sider /både frontend og backen) med dets metoder og egenskaber i stedet for at du på hver side hvor produktet er i brug skal "opfinde" de ting der er behov for.
Avatar billede dkfire Nybegynder
28. juli 2007 - 16:51 #4
OOP hjælper også til at din kode bliver mere struktureret og overskueligt.
Avatar billede aquix Nybegynder
28. juli 2007 - 17:00 #5
Ja, jeg har et par bøger omkring PHP hvor der selvsagt også står en smule beskrevet omkring OOP. Det er på alle mulige måder en langt mere overskuelig kode, når der benyttes classes og functions. Til gengæld er min viden ret begrænset på dette område, og jeg har desværre en smule svært ved at forstå det i detaljer :|

Jeg har kigget en smule på følgende artikel http://www.eksperten.dk/artikler/843 , hvilket også giver et relativt godt indblik i en overskuelig kode. Jeg har dog endnu ikke rigtig fået den til at fungere ;D
Avatar billede dkfire Nybegynder
28. juli 2007 - 17:11 #6
Sig frem hvis du har problemer.
Avatar billede aquix Nybegynder
28. juli 2007 - 17:15 #7
Jamen i så fald, så jeg vil da benytte lejligheden til at fyre et par spørgsmål af :D

Jeg har oprettet classen ShoppingCart med tilhørende funktioner mv. Ydermere har jeg læst hans check fil igennem, hvilken jeg ikke helt forstår. Grundet manglende kreativitet har jeg problemer med at tilføje varer til kurven via f.eks. blabla.dk?kurv=add&produkt=blabla&price=100 ... Kan du hjælpe mig med at forstå hvorledes man "tilføjer" varer til denne kurv? :p
Avatar billede dkfire Nybegynder
28. juli 2007 - 19:16 #8
Nu er det sådan at denne kurv kun kan indeholde produktid'et og antallet for produktet .
Hvis du gerne vil tilføje et produkt via en url, kan du gøre det med $_GET.
Hvis nu url'en så nogenlunde sådan ud:

http://www.minside.dk/index.php?kurv=add&produkt=12&antal=2

Så ville følgende kode tilføje produktet til kurven:

<?php
    session_start();
    require("cart.class.php");          //Loader vores klasse
   
    $cart = new ShoppingCart;

    if( isset($_SESSION['products']) )
        $cart->SetProducts($_SESSION["products"]);

    if( isset($_GET['kurv']) && $_GET['kurv'] == 'add' )
    {
        $cart->AddProduct($_GET['produkt'], $_GET['antal']);        //Tilføjer produktet
        $_SESSION["cart"] = $cart->GetProducts();  // Gemmer i session igen
    }

?>
Avatar billede aquix Nybegynder
28. juli 2007 - 19:33 #9
Ser interessant ud. Jeg prøver det her om et par timer, så vender jeg lige tilbage. Jeg takker foreløbig.
Avatar billede olebole Juniormester
29. juli 2007 - 02:03 #10
<ole>

NB: Hvis du lærer OOP fra en bog, så vær lige opmærksom på, at OOP i PHP5 er grundlæggende forskellig fra OOP i PHP4 - hvilket man desværre ikke får indtryk af i den artikel, du henviser til  ;o)

/mvh
</bole>
Avatar billede windcape Praktikant
29. juli 2007 - 02:26 #11
dkfire:

besværligt :-) Brug dog en singleton til automatisk serialization og derefter gemme i en session.

Eksempel:

http://www.dragons-lair.org/module/repository/PHP/session_singleton.php
Avatar billede dkfire Nybegynder
29. juli 2007 - 08:26 #12
windcape: Nu var det kun et forsøg jeg lige lavede som kun skulle illustrer hvordan det kunne lade sig gøre. Jeg er da bestemt også sikker på det kan gøres på en mere smartere måde.
Avatar billede windcape Praktikant
30. juli 2007 - 04:22 #13
Men så er der vel ikke noget galt i at vise hvordan det kan gøres smartere :-)
Avatar billede dkfire Nybegynder
30. juli 2007 - 17:02 #14
Nææ bestemt ikke, vi kan vel alle lærer noget nyt hele tiden :-)
Avatar billede dkfire Nybegynder
30. juli 2007 - 17:08 #15
Der er bare noget jeg så ikke lige forstår ved din kode, hvordan er det muligt at gemme foobar i session ??
Avatar billede windcape Praktikant
09. august 2007 - 09:53 #16
automatisk object serilization når objekter gammes i sessions ;-)
Avatar billede aquix Nybegynder
24. august 2007 - 01:14 #17
dkfire , du skal da forresten lige have dine point :)) undskyld den sene respons... Smid et svar og du skal få pointene :))
Avatar billede dkfire Nybegynder
24. august 2007 - 08:52 #18
Jamen jeg svare da gerne :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester