Objekt einer Klasse in Array Speichern, später wieder laden

dzab

Grünschnabel
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:
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:
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
 
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:
<?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 funzenden 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 :-)
 
Zurück