[php/alg] Opzet van Objecten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik ben een webshop aan het maken (just 4 fun) en dat probeer ik natuurlijk op een zo goed mogelijke manier te doen. Bij het onwerpen van mijn Product Class kom ik al een beetje in de knoop. Misschien kan iemand mij een inzicht verschaffen.

Ik heb de volende data per Product

code:
1
2
3
4
5
6
7
8
9
10
11
Product
    Id (string)
    Name (string)
    Description (string)
    Variation (array)
        Id (string)
        Name (string)
        Option (array)
            Id (string)
            Name (string)
            Value (string)


Dus bijvoorbeeld:
code:
1
2
3
4
5
6
7
8
234 Car A very nice one
    23 Color
        12 Blue     BL
        13 Yellow   YL
        14 Green    GR
    28  Speed
        23  Fast    FST
        24 Faster   FSTR


Hoe zou de Product class er volgens jullie uit moeten zien? Op het moment heb ik dit:

code:
1
2
3
4
5
6
7
8
9
10
Product
    var Id
    var Name
    var Description
    var Variations
    
    function setId
    function getInfo
    function getVariations
    (straks komt er nog add,remove,update bij)


Maar hoe nu verder? Een apart object maken voor options en variations maken die ik weer binnen de Product class aanroep? En hoe zou zoiets er dan uitzien?

Acties:
  • 0 Henk 'm!

Verwijderd

Je kan bijvoorbeeld in het object product een array maken met objecten vna het type variatie. Dus even in goed php:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
class Variation {
         var $text;
         var $extraprice;

         function Variation($text, $extraprice)
         {
                 $this->text = $text;
                 $this->extraprice = $extraprice;
         }
}
class Product {
         var $id;
         var $name;
         var $description;
         var $variations;
         function setVariation($text, $extraprice)
         {
                   $var = new Variation($text, $extraprice)
                   $this->variations[] = $var; 
         }
         function getAllVariations()
         {
                  $res = "";
                  for($i=0; $i<sizeof($this->variations); $i++) {
                  $res .=  "Voor: "$this->variations[$i]->text.
                           " er komt extra bij:". 
                           $this->variations[$i]->extraprice."<br/>";
                  }
                  return $res;
         }

}
$prod1 = new Product();
$prod1->setVariation("Banane smaak", "10 euro");
$prod1->setVariation("Rood randje", "1 euro");
echo $prod1->getAllVariations();

Acties:
  • 0 Henk 'm!

Verwijderd

Het lijkt wel of iedereen tegenwoordig webshops aan het maken is >:).

Je komt zo alleen in de problemen als je bijvoorbeeld een blauwe auto hebt die niet Faster kan rijden (omdat de blauwe verf te zwaar is), want dat kun je niet in je datamodel weergeven.

Als oplossing daarvoor zou je een matrix kunnen maken met op de kolommen de Opties, op de rijen de Varaties, en de waarde op punt (O, V) geeft aan of deze combinatie van Varatie en Optie beschikbaar is (0 of 1).

Maar 't is het misschien een beetje onnodig moeilijk maken ;).