Door
Reshad F
op 04-11-2012 15:49
gewijzigd op 04-11-2012 17:57
4.040 views
Hello OOP specialisten vooral :)
Ik ben na lange tijd maar weer is achter de PHP classes oefeningen gedoken.
Voor een nieuwe oefening dacht ik een navigatie menu te maken d.m.v. een Navigation class. Waar ik nu precies naar benieuwd ben, wat moet er zoal in en waar moet ik rekening mee houden. zijn er dingen die minimaal in een navigaton class moeten komen? ( denk hierbij aan de interface class ) etc...
alle tips zijn welkom :)
[offtopic]
ik post de vraag ook op andere fora dus wees niet verrast als je het tegenkomt, uiteraard zal ik het uiteindelijke resultaat overal neerzetten.
[/offtopic]
Niet de manier zoals ik het zou doen. Kijk eens naar het menu van bijvoorbeeld deze site. Welke fysieke objecten kom je tegen en wat hebben die voor eigenschappen?
EDIT: Beetje verkeerd begrepen, als dit alleen om het menu gaat kan dit er mee door. Je kan ook alles als een element zien.
Maar die posities horen helemaal niet in PHP thuis, dat doe je maar lekker client-side... :)
Ik denk dan vooral aan een object (class) menuItem met een aantal properties zoals href,name,enabled,active
en dan een object menu met een array als property. in deze array kunnen menuItems of submenu-objecten staan.
dan uiteraard de nodige setters/getters en een output functie
Als je een menu hebt zie je dan alleen links? Nee, je ziet menu items met sub items deze sub items hebben weer link items inzich die weer een tekst inzich hebben vervolgens zijn deze items weer geïntegreerd in een ul item die het menu maakt.
Zie je een pattern ontstaan in de tekst hierboven? Wat kunnen die items en wat is allemaal een item? Heb je een mooiere naam voor een item? Is het een idee om hier een interface van te maken?
Tevens kun je ook wat verder denken: Je kunt het hele principe toepassen voor een complete HTML pagina.
oke ik heb de interface gemaakt en de class en heb het getest en het werkt maar of het echt OO is weet ik niet zeker maar volgens mij zit ik in ieder geval in de goede richting. een ding waar ik niet helemaal uitkom en waar ik graag hulp bij zou kunnen gebruiken is om alle menuitems in een array te zetten..
dus
<?php
$menu->setMenuItem("home", "contact", "menu", "menu2");
?>
en dat deze dus in een array door alle waarde heen loopt in mijn class
hetgeen wat ik nu heb is het volgende:
<?php
class Navigation implements navigationInterface {
public $menu = null;
public $name = null;
public $klasse = null;
public function __construct($name, $klasse) {
$this->name = $name;
$this->klasse = $klasse;
}
public function getName() {
return $this->name;
}
public function getClass() {
return $this->klasse;
}
public function setMenuItem($items) {
$this->menuItem = $items;
}
public function getMenuItem() {
return $this->menuItem;
}
Reshad, deze tip heb ik je al 100 keer gegeven, maar denk niet aan scripten. Denk aan objecten durf die laptop eens dicht te klappen/die computer eens uit te zetten en alleen met een potlood en papier voor je neus te zitten.
Want terwijl we nog helemaal niet klaar zijn met onze OO structuur heb jij al de code af!
Maar wat mis ik verder volgens jou? ( en in antwoord op jou voorlaatste reactie: ik wil het eerst werkend hebben met gewone menu zonder subitems) omdat ik de class nu nog zo klein en schoon mogelijk wil houden alleen maar om te oefenen. Uiteraard is het later nog uit te breiden.