ERLEDIGT
NEIN
NEIN
ANTWORTEN
4
4
ZUGRIFFE
3789
3789
EMPFEHLEN
-
Halli Hallo,
ich arbeite mich gerade in PHP ein und habe eine Frage zur Verwendung von Klassen, bzw. deren Objekte.
Meine Testklasse sieht wie folgt aus:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
class Produktkat { var $kat = ""; var $bez = ""; function Produktkat($a,$b) { $this->kat = $a; $this->bez = $b; } function getKat() { return $this->kat; } function getBez() { return $this->bez; } }
in einer Schleife, lege ich mehrere Objekte an und speichere Sie in einem Array.
So weit so gut, die Objekte werden im Array gespeichert (zumindestens ergibt die Funktion count() die erwartete Anzahl an Elementen.
An einer späteren Stelle will ich das Array auslesen und die Werte aus dem Objekt ausgeben:
Code :1 2 3 4 5 6 7 8 9 10 11
echo("Elemente in Kategorien: ".count($GLOBALS["kategorien"]) ); for($i=0; $i<count($kategorien); ++$i) { $eineKat = settype($GLOBALS["kategorien"][$i],"Produktkat"); echo($eineKat->getKat()); echo(" : "); echo($eineKat->getBez()); echo("<br>"); }
Dann bekomme ich die Fehlermeldung:
Call to a member function on a non-object
Muss ich die einzelnen Elemente beim auslesen casten?
Wenn ja, wie geht das?
Wenn ich aus Spass per echo($eineKat) ausgebe, bekomme ich
Object angezeigt....
viele Grüsse
Dirk
-
dein konstrukt ist im zweiten teil falsch. du verweist auf eine klasse über eine klasse die es nicht gibt.
Beispiel:
echo($eineKat->getKat());
hier noch einige Infos zu Klassen und Objekten.
http://www.dclp-faq.de/q/q-klassen-wie.html
-
Hallo,
meinst Du mit Konstrukt das hier:
settype($GLOBALS["kategorien"][$i],"Produktkat");
?
Das habe ich nur in meiner Verzweiflung mal ausprobiert.
Ich hab das mit den Klassen zuhause noch mal ausprobiert, und da hat es funktioniert....
Das andere Skript war aber auch einiges umfangreicher, mehrere geschachtelte Abfragen. Hab bestimmt an irgendeiner anderen Stelle im Code einen Fehler.....Block schon geschlossen, oder so was....
Trotzdem dankefür die Antwort.
Hier mal der Funktionierende Code (für die, die es interessiert).
Code :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 37 38 39 40 41 42 43 44
<?php class test { var $test; var $test2; function test($a, $b) { $this->test = $a; $this->test2 = $b; } function getTest() { return $this->test; } function getTest2() { return $this->test2; } } ?> <html> <head><title></title></head> <body> <?php $testklasse = new test("hallo","dirk"); $testklasse2 = new test("hallo","andy"); $array = array(); $array[0] = $testklasse; $array[1] = $testklasse2; for($i=0;$i<count($array);++$i) { $tempklasse = $array[$i]; echo($tempklasse->getTest() ); echo(" ".$tempklasse->getTest2() ); echo("<br>"); } ?> </body> </html>
-
ja siehste. das meinte ich. in deinem ****enden code nimmst du ja auch nun bezug auf ein vorhandenes array!
-
$GLOBALS["kategorien"]
gab es auch, ist halt ein global definiertes array, der zugriff darauf ging ja auch.
(z. B. Die Anweisung:
echo("Elemente in Kategorien: ".count($GLOBALS["kategorien"]) );
lieferte die korrekte Anzahl.
Nur die Zuordnung der enthaltenen Elemente und der Klasse ging nicht.
Aber jetzt gehts ja
Ähnliche Themen
-
Mehrere Werte (Array) in DB speichern und später wieder vergleichen/auslesen
Von nafets im Forum PHPAntworten: 4Letzter Beitrag: 29.08.08, 18:08 -
Textarea in DB speichern und später wieder bearbeiten
Von supachecka im Forum PHPAntworten: 2Letzter Beitrag: 07.12.07, 11:23 -
CRichEditCtrl Inhalt temporär speichern und später wieder in Ctrl einfügen
Von Executer im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 11.12.06, 22:57 -
C++ allg. Array als (pvt) Objekt einer Klasse?
Von Tintenfaß im Forum C/C++Antworten: 3Letzter Beitrag: 19.09.06, 15:00 -
JTextfield: Inhalt abspeichern und später wieder laden
Von DarkJedi im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 5Letzter Beitrag: 04.05.05, 20:39





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren