PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit PHP4 und OOP


thoemi
20.11.2007, 19:00:22
Hi

Ich habe folgendes Problem mit PHP4. Folgender Skriptteil funktioniert in PHP4 nicht.

// Constructor
function Navigation (){

// Alle Navigationselemente aus der Datenbank lesen und in ein Array schreiben.
$this->root = new NavigationNode("root","root", "Root", 0, "none", 0, 1);

$navigation_tmp_indexes = array();

$result_nav = mysql_query("SELECT * FROM navigation");
while($row_nav = mysql_fetch_array($result_nav)){
array_push($navigation_tmp_indexes,$row_nav["navigation_id"]);
$navigation_tmp_array[$row_nav["navigation_id"]] = new NavigationNode($row_nav["navigation_id"], $row_nav["tag"], $row_nav["caption"], $row_nav["parent_id"], $row_nav["template"], $row_nav["permission"], $row_nav["visible"]);
}

// Das Array wird durchgegangen, und es wird ein Navigationsbaum erstellt.
for($i = 0; $i < count($navigation_tmp_indexes); $i++){
$index = $navigation_tmp_indexes[$i];
if($navigation_tmp_array[$index]->parent_id == 0){
if(isset($this->root->child_node)){
$current_node = $this->root->child_node;
while(isset($current_node->next_node)){
$current_node = $current_node->next_node;
}
// Neues Element unter der Wurzel
$current_node->next_node = $navigation_tmp_array[$index];
}else{
// Neues und einziges Element unter der Wurzel
$this->root->child_node = $navigation_tmp_array[$index];
}
}else{
if(isset($navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node)){
$current_node = $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node;
while(isset($current_node->next_node)){
$current_node = $current_node->next_node;
}
$current_node->next_node = $navigation_tmp_array[$index];
// Neues Element unter dem Knoten $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id
}else{
// Neues und einziges Element unter dem Knoten $navigation_tmp_array[$navigation_tmp_array[$index]->parent_id
$navigation_tmp_array[$navigation_tmp_array[$index]->parent_id]->child_node = $navigation_tmp_array[$index];
}
}
}
}

Kurz zur erklärung was das Skript genau soll. Das Komplette Skript liest aus der Datenbank die Navigation aus und erstellt eine Baumstruktur. Wobei jeder Knoten als Kindknoten eine Linked-List mit seinen Unterknoten. Jeder Knoten ist ein Menueintrag. Das Problem liegt hier:

$current_node->next_node = $navigation_tmp_array[$index];

Und zwar funktioniert die Zuweisung irgendwie nicht. Komisch ist, dass die $this->root->child_node Zuweisung funktioniert.

In PHP5 funktioniert alles prima. Naja ich hoffe irgendjemand kann mir helfen.

Gruess Thomas

meikel (†)
20.11.2007, 20:07:44
In PHP5 funktioniert alles prima.
Jo.

PHP5:
$instanz = new klasse();

PHP4:
$instanz = & new klasse();