Hallo,
ich habe ein kleines Problem mit Bäumen
Für mein Template system möchte ich Variablen in einen tree einsortieren.
Jetzt bekomme ich leichte schwierigkeiten mit referenzen.. (oder nicht vorhandenen referenzen)
Nachdem der komplette Baum erzeugt wurde rufe ich die Rekursive Funktion CalculatePaths auf. Diese durchläuft den gesamten Tree und schreibt in die Variable $path eines jeden nodes den aktuellen "pfad" (also z.b. "topics.3.content").
Wenn ich diesen Pfad in der Funktion direkt ausgebe funktioniert alles wunderbar.
Nur wenn ich danach testweise den baum nochmal durchlaufe und ganz stur alle pfade ausgeben lasse sind die variablen leer.
h schätze, dass ich irgendwo referenzen verwenden muss, wo ich keine habe. ich weiß nur nicht wo.
Hier der etwas gekürzte code:
ich hoffe mir kann jemand helfen
danke
Dennis
PS: Ich benutze PHP 4.3.4 (mit Zend Optimizer/Debugger trial) und Apache 1.3.x. Das ganze läuft unter WindowsXP Home.
ich habe ein kleines Problem mit Bäumen
Für mein Template system möchte ich Variablen in einen tree einsortieren.
Jetzt bekomme ich leichte schwierigkeiten mit referenzen.. (oder nicht vorhandenen referenzen)
Nachdem der komplette Baum erzeugt wurde rufe ich die Rekursive Funktion CalculatePaths auf. Diese durchläuft den gesamten Tree und schreibt in die Variable $path eines jeden nodes den aktuellen "pfad" (also z.b. "topics.3.content").
Wenn ich diesen Pfad in der Funktion direkt ausgebe funktioniert alles wunderbar.
Nur wenn ich danach testweise den baum nochmal durchlaufe und ganz stur alle pfade ausgeben lasse sind die variablen leer.
h schätze, dass ich irgendwo referenzen verwenden muss, wo ich keine habe. ich weiß nur nicht wo.
Hier der etwas gekürzte code:
PHP-Code:
class cNode
{
[...]
function CalculatePaths( $path="" )
{
$this->path = $path;
echo $this->path . " = " . $this->data . "<br/>"; // Gib den path testweise aus. funktioniert.
if( strcmp( $path, "" ) )
{
$path .= ".";
}
if( !empty( $this->childs ) )
foreach( $this->childs as $child )
{
$child->CalculatePaths( $path.$child->name );
}
}
function DebugPrint() //nächster versuch auszugeben. $this->path ist leer !
{
echo $this->path . $this->data . "<br/>";
if( !empty( $this->childs ) )
foreach( $this->childs as $child )
{
$child->DebugPrint();
}
}
}
// so rufe ich den kram auf:
$root = new cNode( "root", TYPE_ROOT, "" );
// tree füllen ...
$root->CalculatePaths();
$root->DebugPrint();
danke
Dennis
PS: Ich benutze PHP 4.3.4 (mit Zend Optimizer/Debugger trial) und Apache 1.3.x. Das ganze läuft unter WindowsXP Home.
Kommentar