Lid |
|
Goeiedag!
Ik ben reeds een tijdje bezig een eigen CMS te ontwikkelen, ik heb reeds enkele ideeen, maar elke keer ik verderwerk, ben ik niet meer tevreden met wat ik al had. Dat is vrij lastig en ik weet ook wel waaro het zo is. In het begin was ik gewoon begonnen met een opeenstapeling van functies. Nu zien we aan de universiteit OOP in Java, en ik probeer wat de concepten van OOP in PHP te gebruiken.
Ook omdat dit (denk ik) meer mogelijkheden tot uitbreiding geeft.
Maar ik heb een probleem. Dat hele klassegedoe lukt me nog wel voor eenvoudige projecten, maar een CMS zoals ik het mij inbeeld, is al heel wat complexer. Ik vraag me dan ook af hoe ik dit technisch moet realiseren.
Ik zal hier eerst een beschrijving geven van de functionaliteit en dan zeggen in welke richting ik dacht voor mijn klassen. Ik had graag eens geweten wat professionele programmeurs hun visie op mijn tactiek is...
Mijn CMS moet hebben:
[list]
[*]BackEnd, Admin (logisch)
[*]Componenten, zoals Joomla. Het hele opzet is eigenlijk Joomla een beetje na te maken. Op deze manier weet ik waar ik dingen kan aanpassen als ik een modificatie in het script wil of een specifiek onderdeel wil maken.
[*]Templates
[*]Interface talen
[*]... (voor uitbreiding vatbaar)
[/list]
Mijn idee was dus een hoofdobject CMS te maken die een array bevat met componenten (elk ook een object) gezien er maar 1 object actief kan zijn per pagina, is dat nogal dom en zou ik eerder naar een instantie van een object gaan dat ik in het object CMS opsla onder de naam $activeComponent of iets dergelijks.
Elk component is dus een object van een klasse.
Nu wordt de naam van het component uit de URL gehaald door middel van een $_GET['component']. Zo kan men naar de gewenste klasse koppelen om het object aan te maken. Klassen krijgen de naam <Klassenaam>.class.php in de map /extensions (Core componenten (content, contacts, links, ed) zitten in de /core map). Welke objecten er allemaal geïnstalleerd zijn moet het CMS zoeken door de map af te speuren naar .class.php bestanden te zoeken. Het is dus niet de bedoeling dat de componentinfo uit de database komt, zoals dat bij Joomla het geval is (dacht ik).
Maar... Hoe maak je dan een object aan? want gewoon
new $_GET['component']();
new $_GET['component']();
zal niet werken, vermoed ik. Hoe doe ik dat dan praktisch? zet ik voor de klassedefinitie een externe aanroep naar de klasse? of maak ik een index.php die de klasse aanroept zodat ik de klasse wel kan includen zonder ze al aan te maken? Dit is een van de punten waar ik constant opstrop...
Voor de admin kan ik dan wel werken met een array van componenten (elk een object) om te navigeren naar de afzonderlijke adminpanelen van elk component. De admin hoofdklasse zou ook een subklasse user hebben die dan kijkt naar de user die inlogt en de nodige permissies verstrekt.
Nu ben ik tijdelijk uitverteld denk ik. Kan iemand hier helpen? Ik geraak er namelijk zelf niet meer uit...
Oja, BTW, ik zou graag van mijn CMS ook een site willen maken waarmee ik tutorials kan toevoegen. hier moet natuurlijk her en der code tussen, en ik had die graag willen laten coden door highlight_string() of door de Text_highlighter van het PEAR package. Dat inplementeren stelt niet zoveel voor (zoek begintag en eindtag en kleuren maar), maar ik was aan het twijfelen aan de taal voor posts: gwn HTML (TinyMCE dan) of BBCode (editor zelf te schrijven, tenzij iemand een goede editor kent...) maar met BBCode heb ik wel minder ervaring. Dit is dus en van de overwegingen, kan hier ook iemand zijn licht over laten schijnen om voor mij de keuze duidelijker te maken?
Dank
Michiel
|