Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Klasse::Klasse --> und dann auf Attribut der Mutterklasse zurückgreifen? [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Klasse::Klasse --> und dann auf Attribut der Mutterklasse zurückgreifen?


 
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

 
goth
14-04-2003, 18:29 
 
PHP selbst kann das natürlich nicht ... da wirst Du wohl manuell beim Einfügen 'ne Referenz erstellen müssen.

 
TBT
14-04-2003, 19:28 
 
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?

 
TBT
14-04-2003, 19:34 
 
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?

 
TBT
14-04-2003, 19:42 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:19 Uhr.