Für ein Klasse, mit der eine Baumartige Struktur erzeugt wird, gebe ich Referenzen auf Objekte zurück -- und zwar in der Funktion/Methode addson (mit &) . Die Gesamte Klasse (Abstrakt) ist hier
wenn ich nun einen einfachen Test laufen lasse, bei dem ich ein Hauptobjekt erstelle dass 3 Kinder hat klappt das auch. Füge ich einem der Kinder wiederum ein Kind zu geht dieses 'verloren' weil die Referenzübergabe nicht hinhaut:
Der Code:
bringt den Output :
Erst wenn ich Zeile 5 ändere in
(also noch eine Referenz erstelle obwohl die Funktion addson per & bereits eine Referenz liefert) kommt der gewünschte Output:
Aber das ist nicht logisch, dafür übergebe ich die Objekte referenziert als Resultat : funciton & addson (....
Kommentare ?? Tipps?? Fehler??
Danke schonmal ....
PHP-Code:
class rekTest{
var $son=array();
var $id = 0;
function &rekTest() {
$this->id=uniqid(rand());
}
function & addson() {
return $this->son[] = new rekTest();
}
function write()
{
print " Objekt ".$this->id ." hat " .count($this->son). " Kinder [";
foreach ($this->son as $name =>$sonny) {
print "<br> Kind Objekt $name => ".$sonny->id;
$sonny->write();
}
print "]";
}
}
Der Code:
PHP-Code:
srand(time()*1000);
$rt = new rekTest();
$rt->addson();
$rt->addson();
$rt2=$rt->addson();
$rt2->addson();
print "<br> Objekt mit 3 Kindern und 1 Enkel <br>";
$rt->write();
OffTopic:
Objekt 1208700439431ada6e08aaf hat 3 Kinder [
Kind Objekt 0 => 398521158431ada6e093a0 Objekt 398521158431ada6e093a0 hat 0 Kinder []
Kind Objekt 1 => 988215855431ada6e09a4f Objekt 988215855431ada6e09a4f hat 0 Kinder []
Kind Objekt 2 => 1351565107431ada6e0a335 Objekt 1351565107431ada6e0a335 hat 0 Kinder []
]
Erst wenn ich Zeile 5 ändere in
PHP-Code:
$rt2=& $rt->addson();
OffTopic:
Objekt mit 3 Kindern und 1 Enkel
Objekt 1722709587431ada4f5b4fa hat 3 Kinder [
Kind Objekt 0 => 750183619431ada4f5bd4d Objekt 750183619431ada4f5bd4d hat 0 Kinder []
Kind Objekt 1 => 824186739431ada4f5c618 Objekt 824186739431ada4f5c618 hat 0 Kinder []
Kind Objekt 2 => 1694698418431ada4f5cd10 Objekt 1694698418431ada4f5cd10 hat 1 Kinder [
Kind Objekt 0 => 125113148431ada4f5d494 Objekt 125113148431ada4f5d494 hat 0 Kinder []]
]
Aber das ist nicht logisch, dafür übergebe ich die Objekte referenziert als Resultat : funciton & addson (....
Kommentare ?? Tipps?? Fehler??
Danke schonmal ....
Kommentar