PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP: Auf Knoten-Unterklassen zugreifen


Gast
2005-12-12, 18:12:31
So siehts aus:

class core
{
public $classOne;
public $classTwo;
public $someInt = 5;

public __construct()
{
$this->classOne = new class1($this); // und dasselbe nochmal für class2
}
public function printsth()
{
print "Hello";
}
}

class class1
{
public $parentClass;

public __construct($parent)
{
$this->parentClass = $parent;
print $this->parentClass->someInt; // Gibt 5 Aus
$this->parentClass->printsth(); // Funktioniert nicht!!
$this->parentClass->classTwo->printsth() // Spuckt nen Fehler aus!
}
}


Geplant war eigentlich, dass die Klasse core Objekte anderer Klassen erstellt, wobei sie sich ($this) als Parameter übergibt, sodass die "Unterklasse" per $this->parentClass uneingeschränkt auf die public-Elemente der Klasse core zugreifen kann.

Nur das funktioniert offensichtlich irgendwie nicht immer...

MadMan2k
2005-12-12, 18:17:52
könnte daran liegen, dass parent noch nicht fertig initialisiert ist, während du in class1 darauf zugreifst.

BTW: extends kennst du schon, oder?

Gast
2005-12-12, 18:39:36
Ok danke, hab den Zugriff auf die umliegenden Objekte aus den Konstruktoren genommen, nun gehts (und ich muss nun auf eine Funktion ausweichen, die alle Objekte enthalten, die nicht der Konstruktor ist...).

Das mit dem extends:

Wenn ich "class class1 extends core" schreibe und in class1 mit "parent::$ClassTwo->printsth();" ($ClassTwo muss ja static werden) zugreifen will, wird mir Bescheid gegeben, dass ich auf ein nicht existierendes Objekt versuche zuzugreifen... Meine Methode geht da gerade ein wenig besser.

MadMan2k
2005-12-12, 20:30:08
class class1 extends core
{
__construct() {
parent::__construct();

$this->classTwo = //...
}
}


aber nicht getestet...

Gast
2005-12-12, 22:24:13
-> Endlosschleife.

Durch das Bauen eines Kernobjekts, werden automatisch auch alle Module geladen, wenn ein Modul wieder ein Kernobjekt erstellt, erstellt dieses wieder ein Modul usw...