verschachtelte Objekte

verschachtelte Objekte

am 24.07.2006 11:33:45 von Karsten Busenbender

Hallo NG.

Ich habe mir ein Skript geschrieben, das ein Verzeichnis als Objekt
behandelt. Innerhalb dieses Objekts kann es Unterverzeichnisse geben,
die wiederum Objekte sind. Alle Unterverzeichnisse speichere ich als
Objekte in einem Array.
Nun moechte ich auf die im Array vorhandenen Objekte ueber eine Methode
zugreifen. Leider funktioniert das bei mir nicht.

Folgender Quellcode:
($directories ist das Array mit den Unterverzeichnissen als Objekte)
(getSubdirectoryAmount ist eine Methode des Objekts)

reset($this->directories);
while ($subdirectory = each($this->directories))
--> $amount += $subdirectory->getSubdirectoryAmount();

Das ganze soll rekursiv funktionieren. Die entsprechenden
Abbruchkriterien stehen in der Methode. Der Aufruf aus einem Objekt
heraus soll mir die Anzahl aller Unterverzeichnisse, auch derer
Unterverzeichnisse und derer, usw. zurueckliefern.

Fehlermeldung:
Fatal error: Call to a member function on a non-object

Wie muss denn die Syntax lauten, damit ich das Objekt im Array ueber
dessen Methode aufrufen kann?

Gruss
Karsten Busenbender

Re: verschachtelte Objekte

am 24.07.2006 12:19:04 von Markus Malkusch

Karsten Busenbender:

> reset($this->directories);
> while ($subdirectory = each($this->directories))
> --> $amount += $subdirectory->getSubdirectoryAmount();

[..]

> Fatal error: Call to a member function on a non-object

Offenbar ist $subdirectory kein Objekt:


> Wie muss denn die Syntax lauten, damit ich das Objekt im Array ueber
> dessen Methode aufrufen kann?

$subdirectory[1]->getSubdirectoryAmount();

Ich persönlich würde aber gleich eine foreach-Schleife machen:

foreach ($this->directories as $subdirectory) {
$amount += $subdirectory->getSubdirectoryAmount();

}
--
http://hommingberger-gepardenforelle.malkusch.de/

Re: verschachtelte Objekte

am 24.07.2006 13:14:51 von Karsten Busenbender

Danke Markus.

Der Tipp hat geholfen.

Gruss
Karsten