Pascal P.
14-04-2003, 18:21
Ich habe eine Klasse, diese erstellt mir zu Laufzeit Objekte einer anderen Klasse. Also im Grunde Klasse Mutter hat Kinder. Jedes Kind ist wieder ein Objekt von der Klasse Kind. Jetzt nehmen wir an, in der Klasse Mutter gibt es die Eigenschaft "Verheiratet" = true oder false.
Ist es jetzt irgendwie möglich das ich vom Kind aus abfragen kann ob die Mutter verheiratet ist?
Also habe ich im Kind die Möglichkeit folgendes zu machen= Oder wie realisiert man so etwas sonst? Oder muss ich das Attribut dann dem Kind weiterreichen (wenn ich das Kind erstelle)?
Mutter::verheiratet
PHP selbst kann das natürlich nicht ... da wirst Du wohl manuell beim Einfügen 'ne Referenz erstellen müssen.
du könntest beim instanziieren der Kindklasse einen Zeiger
auf die Mutterklasse mitgeben
class Mutter {
function Mutter(){
$child = new Kind(this, ... );
}
}
class Kind{
var mutter;
function Kind(&$mutter, ... ){
$this->mutter=&$mutter;
}
}
Pascal P.
14-04-2003, 19:29
ok, danke, aber würde folgender Ansatz gehen...
Ich schreibe mir in der Mutter eine Funktion "istVerheiratet". Diese gibt dann dann das Attribut "verheiratet" zurück. Kann ich dann die Methode vom Kind aus aufrufen?
Mutter::istVerheiratet();
aufrufen?
mit meinem obigen Beispiel kannste auch direkt zugreifen
if($this->mutter->verheiratet==true)
// ...
Pascal P.
14-04-2003, 19:38
Ich könnte es aber auch so schreiben :D ...
if($this->mutter->verheiratet)
Aber jetzt noch mal zum verstehen. Es handlet sich dabei wirklich um ienen ZEiger, oder wird das Objekt kopiert?
wenn du so übergibst
$child=new Kind(this,...)
function Kind($mutter, ... )
wird eine Kopie angelegt, mit & übergibst du Referenzen (Zeiger)
und dann wird keine Kopie gemacht
$child = new Kind ($this, ... )
function Kind(&$mutter,...){
$this->mutter=&$mutter;
}
BEIDE & sind wichtig !!!
Pascal P.
14-04-2003, 19:48
okey, danke, hast mir sehr geholfen.
Greatz