Core Framework

Deze framework is zo ontworpen dat er een duidelijke scheiding is tussen de business logic en de opmaak. Het is een ontwerpt wat veel lijkt om MVC en toch is het het net niet. De laag naar de modules zijn abstracter, de controllers kunnen worden genesteld en kunnen zich voor doen als views.

De basis bestaat uit 4 classes en 3 functies welke hieronder worden uitgelegd, daarnaast worden deze in de meeste gevallen ondersteund door een Database class en een Session class

Class: Template

Dankzij deze class wordt de rendering van de pagina mogelijk. Dit omdat deze class een wrapper is voor een html onderdeel. De template class word door de bovenliggende controller class gevuld met data en eventuele sub onderdelen.

De bestanden hiervan worden netjes geordend in een mappen structuur:

  • "/templates/<template naam>/documents"
  • "/templates/<template naam>/modules/<module naam>.html.php"
  • "/templates/<template naam>/modules/<module naam>/<sub naam>.html.php"

Elke .html.php heeft hierdoor een unieke path en kan daardoor dus een unieke class erbij krijgen. Welke de mogelijkheid geeft voor het event die template gerelateerd is maar moet gebeuren voordat er ook maar 1 byte aan html wordt gerenderd. Voorbeelden hiervan zijn bijvoorbeeld het includen van een aantal css of java-script bestanden.

Class: Module

De module class, deze class levert de data die de templates kunnen weergeven. Daarnaast zorgt deze class ook voor de afhandeling van de acties. Deze class is abstact en is dus ook bedoelt om de extenden. Alle modules zijn te vinden in de map "/modules/". De reden dat de Core framework lijkt op een MVC maar het toch niet is is omdat deze Module classes zich kunnen voordoen als templates. Dit geeft de mogelijkheid dat een module zich onderdanig kan maken aan zichzelf. Een voorbeeld hiervan is bijvoorbeeld een module die een pagina toont, maar dat op deze pagina ook in 2 kolommen kan worden weergegeven waarbij het dan 2 subtemplates kan tonen. Ook zou hier ipv sub templates andere modules kunnen bijvoorbeeld een menu of een reclame-banner.

Class: Document

De Document class, deze class is vrijwel gelijk aan de Module class, op het feit na dat deze gespecificeerd is op het zijn van de document. Dit betekend dat deze globaal te benaderen is en dus functies zoals het instellen van de titel, of het verwerken van css includes regelt.

Class: Core

De core class is de class waaruit alles geladen wordt. deze class is verantwoordelijk voor het laden van de modules, documenten en templates. Verder start hier de render reeks en bepaalt de template en style die gekozen is. De class in dus de kern van het systeem.

Functie: PageMain

Elke pagina kent een PageMain functie en is uniek op elke pagina. Dit komt omdat de programmeur deze functie moet invullen naar de wensen van de pagina. Zo zijn een van de basis taken die deze functie doet is het bepalen van de Document, de template en style, en het instellen van de main inhoud.

Functie: RunPage

De functie RunPage is een functie die word aangeroepen aan het eind van de pagina code. Deze functie zet de hele beweging in gang. Zo initialiseer deze de code class roep de PageMain functie aan en dan wordt de rendering gestart. De andere belangrijke taak die deze functie heeft is wanneer is een POST request word gedaan door de client. Bijvoorbeeld als er een formulier word gesubmit. In dit formulier zit een geëncrypteerd veld welke bepaalt de module die geladen moet worden voor het afhandelen van de actie die nodig is voor het verwerken van de formulier gegevens.

Eventmodel

Zie hier onder de event model