| Visa föregående ämne :: Visa nästa ämne |
| Startad av: |
Meddelande |
braddy
Medlem i: 1063 dagar
Status: Offline
#721005
|
Skrivet: 2012-02-25 00:25
Ämne: OOP fråga
|
|
|
Hej jag försöker lära mig objekt-orienterad PHP, är ganska ny på PHP också...
Nu håller jag på att exprimentera med en klass som ser ut så här:
1: 2: class UnitCounter
3: {
4: var $units;
5: var $weightPerUnit;
6:
7: function add($n=1)
8: {
9: $this->units = $this->units + $n;
10: }
11:
12: function totalWeight()
13: {
14: return $this->units * $this->weightPerUnit;
15: }
16:
17: function __construct($unitWeight=1.0)
18: {
19: $this->weightPerUnit = $unitWeight;
20: $this->units = 0;
21: }
22: }
23:
|
Min index.php fil ser ut som här: Exempel 1
1: 2: $bottles = new UnitCounter(1.5);
3:
4: if(isset($_POST['go']))
5: {
6: $bottles->add($_POST['bottles']);
7: }
8: print $bottles->totalWeight();
9:
|
Tanken är att den ska addera varje värde jag lägger in, men den gör inte det. Om jag istället skriver så här: Exempel 2
1: 2: $bottles = new UnitCounter(1.2);
3: $bottles->add(3);
4: print $bottles->totalWeight() . "<br />";
5: $bottles->add(4);
6: print $bottles->totalWeight()
7:
|
Så gör den det, är det för att jag använder <form action...> i mitt föregående exempel som den instansierar ett nytt objekt varje gång och inte i det sista exemplet? Hur kommer man runt det i så fall, kan någon ändra min kod i exempel 1 så det funkar? Jag vill gärna ha en förklaring så jag förstår själv hur det fungerar. Tack |
|
|
|
| Till toppen på sidan |
|
Wedge


Medlem i: 3919 dagar Från: Järfälla
Status: Offline
#721007
|
Skrivet: 2012-02-25 01:03
Ämne:
|
|
|
Du kan komma runt problemet genom att lägga ditt objekt i en sessionsvariabel istället för att ha det i en vanlig variabel.
Då måste du också se till att klassdefinitionen kommer före session_start().
Plus att du kanske måste göra lite anpassning så att objektet skapas om inget objekt finns i sessionsvariabeln. |
|
|
_________________ Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber |
| Till toppen på sidan |
|
braddy
Medlem i: 1063 dagar
Status: Offline
#721010
|
Skrivet: 2012-02-25 09:34
Ämne:
|
|
|
Hej Wedge
Ok, då ska jag prova det och se, tack för svaret så länge.
Är detta det tillvägagångsätt som man normalt använder sig av i php? |
|
|
|
| Till toppen på sidan |
|
Wedge


Medlem i: 3919 dagar Från: Järfälla
Status: Offline
#721011
|
Skrivet: 2012-02-25 10:08
Ämne:
|
|
|
Jag tror inte att just objekt i sessionsvariabler är speciellt vanligt, det kommer sällan trådar om sånt här.
Men att använda en session för att behålla data från en sidladdning till en annan är å andra sidan standardteknik. |
|
|
_________________ Qualitum Webbhotell | Gomoku.se | PHP6.se
Skådebröd är fullt av optisk fiber |
| Till toppen på sidan |
|
Peppe L-G

Medlem i: 2268 dagar Från: Linköping
Status: Offline
#721012
|
Skrivet: 2012-02-25 10:22
Ämne:
|
|
|
| Wedge skrev: |
| Jag tror inte att just objekt i sessionsvariabler är speciellt vanligt, det kommer sällan trådar om sånt här. |
Finns det någon nackdel med det? Jag tycker det låter smidigt. |
|
|
_________________ Första spelet på Robuni kan nu laddas ner. |
| Till toppen på sidan |
|
braddy
Medlem i: 1063 dagar
Status: Offline
#721013
|
Skrivet: 2012-02-25 11:26
Ämne:
|
|
|
| Det funkade jättebra, så jag tackar en än gång för din hjälp. |
|
|
|
| Till toppen på sidan |
|
intedinmamma
Medlem i: 1379 dagar Från: Göteborg
Status: Offline
#721016
|
Skrivet: 2012-02-25 16:05
Ämne:
|
|
|
| Peppe L-G skrev: |
| Wedge skrev: |
| Jag tror inte att just objekt i sessionsvariabler är speciellt vanligt, det kommer sällan trådar om sånt här. |
Finns det någon nackdel med det? Jag tycker det låter smidigt. | Beroende på hur man lägger upp sin applikation så kan det bli problem om man t ex surfar med flera flikar för samma sida. Om man har en sessionsvariabel som håller reda på t ex vart man är i en guide, och sedan kör guiden parallellt i samma session så kan det bli konflikter.
Dessutom så blir det mer data att lagra i sessionen, vilket kan bli ett prestandaproblem om man har mycket trafik. All sessionsdata serialiseras och avserialiseras ju för varje sidvisning. |
|
|
_________________ Statistiskt sett? Kanske. |
| Till toppen på sidan |
|
|