Salvete,
Nur mal so als Denkanstoss - kann man natuerlich beliebig variieren:
// Ein Menu-Item
public class MenuItem
{
protected $SubItems; // Sub-Array of MenuItems
public $Url;
public $Text;
public $ToolTip;
// etc.. alle benoetigten Eigenschaften
public function GetItems() { .. }
public function AddItem($MenuItem) { ... }
public function SetItems($arrMenuItems) { ... }
}
// Das Menu
public class Menu
{
protected $Items; // recursie array of MenuItems
public function GetItems() {
return $this->Items;
}
public function AddItem($MenuItem) {
if($MenuItem instanceof MenuItem)
array_push($this->Items, $MenuItem);
}
public function SetItems($arrMenuItems) {
$this->Items = $arrMenuItems;
}
public function GetCurrent() {[...] }
public function SetCurrent($MenuItem) {[...] }
public function DoSomeMenuOperations() { [...] }
// saemtliche Methoden die due fuer ein Menu benoetigst
[...]
// das Menu koennte sich auch selbst zusammenbauen
public function BuildMenu($MenutItem=$this->$Items) {
$htmlMenu = '<ul>';
foreach($this->Items as $Item) {
$htmlMenu .= '<li> <a href='.$Item->Url.' title='.$Item->ToolTip.'>'.$Item->Text.'</a></li> ';
// irgendeinen rekursiven Aufruf zusammenbasteln
$this->BuildMenu($Item->GetItems());
// bla blub
}
[...]
return $htmlMenu;
}
}
MfG,
Sympatisant
--
"Non dura iubeantur, non prohibeantur inpura."
"Non dura iubeantur, non prohibeantur inpura."