Hallo Community!
Nachdem ich seit fast 2 STunden nun schon auf der Suche nach meinem Denk- bzw. Verständnisfehler bin, dachte ich mir, ich frag Euch einfach mal:
Habe eine Klasse Warenkorb geschrieben. Ein WK wird erzeugt, wenn ein Besucher die Seite betritt. Nun legt er einen Artikel in diesen. Konsequent ist doch jetzt nach dem OOP Ansatz, dass ich eine weitere Klasse WarenkorbInhalt habe, wo die einzelnen Artikel darin als Objekte erzeugt werden => Auf Deutsch:
Wenn der Besucher etwas in den WK legt, dann wird ein Objekt der Klasse WarenkorbInhalt instanziiert. Jetzt möchte ich natürlich diese einzelnen Artikel über den Warenkorb "verwalten" und z.B. in einer Funktion in der Klasse Warenkorb die als Objektreferenzen gespeicherten Objekte der Klasse WarenkorbInhalt ansprechen und ihnen einen Botschft schicken, wie z.B. showDetails.
Genau das ist mein Problem! Ich habe da wohl was noch nicht verstanden, denn wenn ich versuche die Methode der anderen Klasse aus der KLasse Warenkorb aufzurufen kommt diese Fehlermeldung:
Anbei mal mein erstellter Quelltext - vielleicht kann mir ja einer von Euch sagen, was ich grundsätzlich falsch mache und wo der Knackpunkt ist:
Vielen Dank für Eure Hilfe!
Nachdem ich seit fast 2 STunden nun schon auf der Suche nach meinem Denk- bzw. Verständnisfehler bin, dachte ich mir, ich frag Euch einfach mal:
Habe eine Klasse Warenkorb geschrieben. Ein WK wird erzeugt, wenn ein Besucher die Seite betritt. Nun legt er einen Artikel in diesen. Konsequent ist doch jetzt nach dem OOP Ansatz, dass ich eine weitere Klasse WarenkorbInhalt habe, wo die einzelnen Artikel darin als Objekte erzeugt werden => Auf Deutsch:
Wenn der Besucher etwas in den WK legt, dann wird ein Objekt der Klasse WarenkorbInhalt instanziiert. Jetzt möchte ich natürlich diese einzelnen Artikel über den Warenkorb "verwalten" und z.B. in einer Funktion in der Klasse Warenkorb die als Objektreferenzen gespeicherten Objekte der Klasse WarenkorbInhalt ansprechen und ihnen einen Botschft schicken, wie z.B. showDetails.
Genau das ist mein Problem! Ich habe da wohl was noch nicht verstanden, denn wenn ich versuche die Methode der anderen Klasse aus der KLasse Warenkorb aufzurufen kommt diese Fehlermeldung:
Fatal error: Call to a member function on a non-object in
PHP-Code:
#Warenkorbklasse
class warenkorb
{
# Variablen
var $wkID, $anzahlArtikel, $wkPositionen = array();
#neuen Warenkorb einrichten
function set_newWK($sessionID)
{
$this->wkID= $sessionID;
$this->anzahlArtikel=0;
}
#Anzeige Warenkorb Parameters
function showWK_Parameters()
{
echo '<b>Anzahl der Artikel</b> im Warenkorb: '.$this->anzahlArtikel.'<br/><b>SessionID</b>: '.$this->wkID.'<p/>Liste der Artikel darin:<p/>';
$a=0;
while($a<$this->anzahlArtikel){
$this->wkPositionen[$a]-> show_Details();
$a++;
}
}
#Neuen Artikel in WK
function setArtikel_WK($pID, $Artikelname, $ArtikelNummer, $Hersteller, $Gr, $Farbe, $UVP, $Anz)
{
$mc = $pID.$Artikelname.$ArtikelNummer.$Gr.$Farbe.$Hersteller;
$a=0;
$is_objekt = false;
while($a<$this->anzahlArtikel){
$is_objekt= $this->wkPositionen[$this->anzahlArtikel]->checkMatchcode($mc);
$a++;
}#ENDE WHILE
if($is_objekt==false){# Es muss eine Instanz der Klasse WarenkorbInhalt erzeugt werden
$this->wkPositionen[($this->anzahlArtikel+1)] = new warenkorbInhalt();
$this->wkPositionen[($this->anzahlArtikel+1)]->setWK_Artikel($pID, $Artikelname, $ArtikelNummer, $Hersteller, $Gr, $Farbe, $UVP, $Anz, $mc);
}
$this->anzahlArtikel = count($this->wkPositionen);
}
}
#WarenkorbInhalt
class warenkorbInhalt extends warenkorb
{
var $pID, $Artikelname, $ArtikelNummer, $Hersteller, $Gr, $Farbe, $UVP, $Anz;
var $pMatchCode;
# Warenmatchcode prüfen...
function &checkMatchcode($mc)
{
if($this->pMatchCode==$mc)
return true;
}
# Artikeldaten setzten
function setWK_Artikel($pID, $Artikelname, $ArtikelNummer, $Hersteller, $Gr, $Farbe, $UVP, $Anz, $pMatchCode)
{
$this->pID=$pID;
$this->Artikelname=$Artikelname;
$this->ArtikelNummer=$ArtikelNummer;
$this->Hersteller=$Hersteller;
$this->Gr=$Gr;
$this->Farbe=$Farbe;
$this->UVP=$UVP;
$this->Anz=$Anz;
$this->pMatchCode=$pMatchCode;
}
#Anzeigen
function show_Details()
{
echo'Hier meldet sich das Objekt: '.$this->pMatchCode.'<p/>pID: '.$this->pID.'<br/>Artikelname: '.$this->Artikelname.';
}
}
Kommentar