[PHP/MySQL] Object tree en modulisatie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik wil graag een basissysteem maken voor al mijn toekomstige projecten. Dit systeem moet gaan werken met PHP 4 in combinatie met eem MySQL database.

Ik moet daarbij een beetje op weg geholpen worden en misschien kan 1 van jullie mij wat tips geven.

Eerst gaat het dus om eem module systeem. Een module moet in principe alles kunnen doen. Ik heb al een tip van iemand gekregen om interfaces te defineren. Alhoewel PHP 4 dit nog niet ondersteund kan je wel interfaces op 'papier' hebben.
Maar dit is nog niet genoeg ben ik bang. Hoe begin ik hiermee?

Het 2e gedeelte van het systeem is een object tree. Met in de database een parent field gekoppeld aan het id van een eventuele parent. Deze objecten of nodes zijn instanties van een module. Niet iedere type module komt in deze tree, maar bepaalde wel. (voor een CMS zou bijvoorbeeld het er zo uit te komen zien: root/www.website.nl/content/homepage)
Per object/node komt ook in een tabel te staan welke user en/of groep rechten heeft om een actie uit te voeren. Sommige acties zijn standaard bijvoorbeeld READ, EDIT, ADD, DELETE. In de module staat welke van deze acties geimplementeerd zijn en staan ook eventuele custom acties.


Wie kan me uitleggen hoe je begint met het bouwen van zo'n engine? Als er meer informatie nodig is dan zal ik proberen dat zo uitvoerig mogelijk te beschrijven..

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Een mooi opzetje van gordijnstok:
[rml]Gordijnstok in "[ cms/php] cms db opzet"[/rml]

Ik dacht dat ik dit vandaag al eens gepost had 8)7 ander forum misschien..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik dacht dat ik dit vandaag al eens gepost had 8)7 ander forum misschien..
hehe ja klopt, daardoor kwam ik ook op het idee om het hier ook eens te gaan posten :)

Bedankt voor de tip trouwens, maar dit is niet echt wat ik zoek. Dit is ongeveer het onderdeel wat ik zelf ook al bedacht had.

Het andere punt ging om de modules. Behalve dat er nodes moeten komen voor de velden uit de database heb ik ook een module-systeem nodig.

Ik wil bijvoorbeeld een XSLT en een SOAP module hebben, en ook een module die zorgt voor het verwerken van serverlogs van o.a. de mail-, web- en ftpserver.
het onderdeel die zorgt voor de content zoals ongeveer beschreven in de POST is ook een aparte module die die standaard velden inleest.

Hoe implementeer je een goed gemoduleerd systeem is mijn echte vraag?

Evert

Acties:
  • 0 Henk 'm!

Verwijderd

Een paar tips om te voorkomen dat je tegen problemen aanloopt waar ik ook overheen heb moeten klouteren.


1) Kijk wat je nodig hebt in je modulisatie

Modulariteit is mooi. Flexibiliteit ook. Maar pas op dat je het niet overdrijft. Bij de eerste versies van een modulair systeem dat ik momenteel aan het maken ben hadden we ook het idee dat we alles in modules moesten gaan zetten, maar zo lang je niet precies weet wat deze modules nou inhouden is het lastig om hiervoor een deugdelijk systeem op te zetten.

Neem bijvoorbeeld je XSLT, SOAP en Serverlogs modules. Het is natuurlijk handig dat dit in aparte modules komt, maar conceptueel zijn dit drie heel verschillende dingen. De gangbare aanpak zou zijn dat je een (abstacte) Module class maakt die de basis functionaliteit beschrijft voor module waarvan je eigenlijke module subclasses zijn. Het punt is alleen dat je door de uiteenlopende functionaliteiten van je modules maar heel weinig profijt hebt van je module systeem. In feite is de enige operatie die op alle drie de modules van toepassing is het activeren en deactiveren.

Je zegt bijvoorbeeld ook dat je modules READ, EDIT, ADD en DELETE functionaliteit moeten hebben, maar waarschijnlijk is het weer handiger om deze operaties op de Node class van je boom de definiëren. Je zou dan weer Node subclasses kunnen maken die de bijvoorbeeld node-specifieke EDIT functies bevatten.


2) De boom

Denk ook eerst na of het handig is dat je alles in een boomstructuur gaat zetten. Mij leek het eerst ook een goed plan om van alle en nog wat in de boom te duwen, maar het is niet altijd even helder. Ik had op een gegeven moment echt alles in een boom geduwd en je moest zodoende een niveau of vijf expanden voordat je bij de content van je site kwam. Een tip: zet alleen node's die conceptueel hetzelfde voorstellen samen in een boom, zoals folders, modules etc.


3) Hoe ga je te werk?

Bedenk eerst wat je als basis nodig hebt. Implementeer dit gewoon zonder modules zoals je dat gewoon zou doen. Vervolgens kijk je waar mogelijkheden zijn voor modulariteit (templates, logging etc). Verhuis deze functionaliteiten naar modules en kijk weer wat je verder nodig hebt. Als je volgens deze cyclus ('refactoring') te werk gaat heb je uiteindelijk een vast 'core' systeem met daar omheen de uitwisselbare modules.


Hopelijk heb je wat aan dit geneuzel :+

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Je zou kunnen overwegen wat standaardmodules voor b.v. SOAP te gebruiken. Er zijn aardig wat standaardmodules, maar ik ben even de naam van het geheel vergeten. Tot de edit dus :)

Acties:
  • 0 Henk 'm!

  • X-Lars
  • Registratie: Januari 2004
  • Niet online

X-Lars

Just GoT it.

Titelfix? Het is "modularisatie" :)
Pagina: 1