| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

29-08-2005, 22:00
|
|
Zefixhall
Newbie
|
|
Registriert seit: Jul 2003
Ort: München, Bayern
Beiträge: 37
|
|
Methoden Aufruf eines als Referenz in Klasse gespeichertes Objekt
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:
Zitat:
|
Fatal error: Call to a member function on a non-object in
|
Anbei mal mein erstellter Quelltext - vielleicht kann mir ja einer von Euch sagen, was ich grundsätzlich falsch mache und wo der Knackpunkt ist:
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.;
}
}
Vielen Dank für Eure Hilfe!
|

29-08-2005, 22:09
|
ghostgambler
Master 
|
|
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
|
|
Zeilenumbrüche in den Code, ansonsten liest ihn die Hälfte nicht mal...
|

29-08-2005, 22:16
|
Shurakai
Master  
|
|
Registriert seit: May 2004
Ort: Bergisch Gladbach
Beiträge: 3.090
|
|
var_dump() benutzen und mal debuggen
|

30-08-2005, 00:28
|
|
PhilW
Junior Member
|
|
Registriert seit: Mar 2005
Beiträge: 56
|
|
Tausch das mal mit dem aus...
PHP-Code:
...
#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[$a]->checkMatchcode($mc);
$a++;
}#ENDE WHILE
if($is_objekt==false){# Es muss eine Instanz der Klasse WarenkorbInhalt erzeugt werden
$this->wkPositionen[$a] = new warenkorbInhalt();
$this->wkPositionen[$a]->setWK_Artikel($pID, $Artikelname, $ArtikelNummer,
$Hersteller, $Gr, $Farbe,
$UVP, $Anz, $mc);
}
$this->anzahlArtikel = count($this->wkPositionen);
}
...
hoffe ich konnte helfen
Phil
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|