reuabreliz
Mitglied
Also ich hätte gerne eine Menueklasse. Das Menue soll anhand verketteter Listen aufgebaut sein. Ich habe eine Klasse MenueAttributes. Die wird von der Klasse Menue geerbt. Ich weiß dass ich das in einer Klasse auch machen kann. Aber dann kenne ich mich nicht mehr aus. Wenn es funktioniert, werde ich die Attribute in die Klasse Menue einbinden.
Also meine Probleme bei der Sache sind:
Also alles in allem zusammengefasst, löse ich in PHP das Problem mit den Zeigern auf das eigene Objekt, die ich ja für eine verkettete Liste brauche
PHP:
<?php
class MenueAttributes
{
var $menueName;
var $felderverweise;
var $feldernamen;
var $menuePrevious;
var $menueNext;
function __construct()
{
}
}
?>
PHP:
<?php
require_once("Includes\menue\menueAttributes-class.php");
class Menue extends MenueAttributes
{
var $menueAktuell;
function __construct() //erstellt Neues Menue
{
$this->menueAktuell = new Menue();
$this->menueAktuell->menuePrevious = null;
}
function __destruct() //zerstört das ganze Menue *muhahaha*
{
unset($this->menueAktuell);
}
function addMenue($felderverweise,$feldernamen,$name) //fügt ein Menue mit einer bestimmten FelderAnzahl hinzu
{
if(sizeof($felderverweise) == sizeof($feldernamen))
{
$this->menueAktuell->menueName = $name;
for($i=0;$i<sizeof($feldernamen);$i++)
{
$this->add($felderverweis, $feldername);
echo "Felderverweise: ".$this->menueAktuell->felderverweise[$i];
}
$this->menueAktuell->menueNext = new Menue();
$this->menueAktuell->menueNext->menuePrevious = $this->menueAktuell;
$this->menueAktuell->menueNext->menueNext = null;
$this->menueAktuell = $this->menueAktuell->menueNext;
}
}
function getMenue()
{
return $this->menueAktuell;
}
function add($felderverweis, $feldername) //Fügt einem Menue ein Feld hinzu
{
$this->menueAktuell->felderverweise = array();
$this->menueAktuell->feldernamen = array();
array_push($this->menueAktuell->felderverweise, $felderverweis);
array_push($this->menueAktuell->feldernamen,$feldername);
}
function goToFirst() //geht zum ersten Menue
{
while(($this->menueAktuell->menuePrevious == null))
{
$this->menueAktuell = $this->menueAktuell->menuePrevious;
}
}
function goToLast() //geht zum Letzten Menue
{
while(($this->menueAktuell->menueNext == null))
{
$this->menueAktuell = $this->menueAktuell->menueNext;
}
}
function showMenue() //gibt das Menue formatiert aus
{
$this->goToFirst();
echo "<ul id='navi'>";
while($this->menueAktuell->menueNext == null) //durchläuft alle Menues
{
echo "<li><ul>".$this->menueAktuell->menueName;
for($i=0; $i < sizeof($this->menueAktuell->felderverweise); $i++) //durchläuft alle Felder eines Menues
{
echo "<li><a href='index.php?mainsite=".$this->menueAktuell->felderverweise[$i]."'>".$this->menueAktuell->feldernamen[$i]."</a></li>";
}
echo "</ul></li>";
$this->menueAktuell = $this->menueAktuell->menueNext;
}
echo "</ul>";
}
}
?>
Also meine Probleme bei der Sache sind:
- Es funktioniert nicht in der Klasse ein Objekt von der Klasse selbst zu machen.
- Es geht irgendwie nicht über $this->menueAktuell->felderverweise auf die Felderverweise von menueAktuell zuzugreifen.
- Wie kann ich das mit dem Zeiger auf das eigene Objekt lösen in PHP. In C++ ist das ja leichter.
- Ja und Allgemeine Verbesserungen die ich übersehen habe oder die anders gehören
Also alles in allem zusammengefasst, löse ich in PHP das Problem mit den Zeigern auf das eigene Objekt, die ich ja für eine verkettete Liste brauche