Hallo Leute,
ich bin neu hier und auch Anfänger im Bereich PHP. Also nochmal "Hallo euch allen!".
Ich wurde im IRC auf dieses Forum aufmerksam gemacht und versuche mein Glück gleich mal hier:
Beim Programmieren einer Menü-Klasse bin ich auf ein Problem gestossen, welches ich nicht erklären kann...
Ich habe die abgespeckte Klasse und zugehörigen Zeilen mal hier angehängt. Es soll eine Menüstruktur erzeugt werden und ausgehend vom ROOT-Eintrag soll diese Struktur ausgegeben werden. Aber leider fehlen Teile bzw. Einträge der 3. Ebene.
Die Struktur sollte so aussehen
TEST2 fehlt aber beim anschliessenden rekursiven Durchlaufen der Einträge.
Der Einfachheit halber mal die Ausgabe:
Erwarten würde ich aber, dass vor der dritten Trennlinie
und als letzte Zeile
ausgegeben würde.
Vielleicht übersehe ich auch nach einigen Stunden irgend etwas, aber ich sehe dort, bis auf die falsche Ausgabe, kein Problem.
Wäre schön, wenn sich das mal jemand ansehen könnte. Ich bin (beinahe) verzweifelt...
Danke im voraus
Carsten
---------------------------------------------------------------
ich bin neu hier und auch Anfänger im Bereich PHP. Also nochmal "Hallo euch allen!".
Ich wurde im IRC auf dieses Forum aufmerksam gemacht und versuche mein Glück gleich mal hier:
Beim Programmieren einer Menü-Klasse bin ich auf ein Problem gestossen, welches ich nicht erklären kann...
Ich habe die abgespeckte Klasse und zugehörigen Zeilen mal hier angehängt. Es soll eine Menüstruktur erzeugt werden und ausgehend vom ROOT-Eintrag soll diese Struktur ausgegeben werden. Aber leider fehlen Teile bzw. Einträge der 3. Ebene.
Die Struktur sollte so aussehen
Code:
ROOT
- TEST1
- TEST2
TEST2 fehlt aber beim anschliessenden rekursiven Durchlaufen der Einträge.
Der Einfachheit halber mal die Ausgabe:
Code:
ROOT (has 0 entries)
===================================
Adding entry: ROOT - TEST1
ROOT (has 1 entries)
ROOT - TEST1 (has 0 entries)
===================================
Adding entry: ROOT - TEST1 - TEST2
ROOT (has 1 entries)
ROOT - TEST1 (has 0 entries)
===================================
Adding entry: ROOT - TEST1 - TEST2 - TEST3
ROOT (has 1 entries)
ROOT - TEST1 (has 0 entries)
Erwarten würde ich aber, dass vor der dritten Trennlinie
Code:
ROOT - TEST1 (has 1 entries)
und als letzte Zeile
Code:
ROOT - TEST1 - TEST2 (has 0 entries)
ausgegeben würde.
Vielleicht übersehe ich auch nach einigen Stunden irgend etwas, aber ich sehe dort, bis auf die falsche Ausgabe, kein Problem.
Wäre schön, wenn sich das mal jemand ansehen könnte. Ich bin (beinahe) verzweifelt...
Danke im voraus
Carsten
---------------------------------------------------------------
PHP:
require("inc/classMenu.inc.php");
$thisMenu = new Menu;
$thisMenu->lala();
echo "===================================<br>";
$x = $thisMenu->addEntry(new Menu("TEST1"));
$thisMenu->lala();
echo "===================================<br>";
$y = $x->addEntry(new Menu("TEST2"));
$thisMenu->lala();
echo "===================================<br>";
$z = $y->addEntry(new Menu("TEST3"));
$thisMenu->lala();
class Menu {
var $menuEntries;
var $name;
var $parent;
var $numEntries;
function Menu($name = "ROOT")
{
$this->menuEntries = array();
$this->name = $name;
$this->parent = null;
$this->numEntries = 0;
}
function addEntry($menuEntry)
{
$menuEntry->parent = $this;
$this->menuEntries[] = $menuEntry;
$this->numEntries++;
$x = $menuEntry;
$raus = "$x->name";
while($x = $x->parent)
{
$raus = "$x->name - ".$raus;
}
echo "Adding entry: $raus<br>";
return $menuEntry;
}
function lala()
{
$x = $this;
$raus = "";
while($x = $x->parent)
{
$raus = "$x->name - ".$raus;
}
$x = $this;
while($x = $x->parent)
{
$raus = " ".$raus;
}
echo "$raus $this->name (has $this->numEntries entries)<br>";
foreach($this->menuEntries as $entry)
{
$entry->lala();
}
}
}
Zuletzt bearbeitet: