qualitum logo
OOP fråga

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
braddy



Medlem i: 1063 dagar

Status: Offline



#721005
Inlägg Skrivet: 2012-02-25 00:25      Ämne: OOP fråga Citera

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:
KOD:
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
KOD:
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
KOD:
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
Visa användarprofil Skicka privat meddelande
Wedge
Administratör



Medlem i: 3919 dagar
Från: Järfälla
Status: Offline



#721007
Inlägg Skrivet: 2012-02-25 01:03      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
braddy



Medlem i: 1063 dagar

Status: Offline



#721010
Inlägg Skrivet: 2012-02-25 09:34      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande
Wedge
Administratör



Medlem i: 3919 dagar
Från: Järfälla
Status: Offline



#721011
Inlägg Skrivet: 2012-02-25 10:08      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida MSN Messenger
Peppe L-G



Medlem i: 2268 dagar
Från: Linköping
Status: Offline



#721012
Inlägg Skrivet: 2012-02-25 10:22      Ämne: Citera

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 speletRobuni kan nu laddas ner.
Till toppen på sidan
Visa användarprofil Skicka privat meddelande MSN Messenger
braddy



Medlem i: 1063 dagar

Status: Offline



#721013
Inlägg Skrivet: 2012-02-25 11:26      Ämne: Citera

Det funkade jättebra, så jag tackar en än gång för din hjälp.
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
intedinmamma



Medlem i: 1379 dagar
Från: Göteborg
Status: Offline



#721016
Inlägg Skrivet: 2012-02-25 16:05      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
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
qualitum logo