1. Gebruik de architectuur MVC in web-/PHP-toepassingen
De PDF van het document is beschikbaar |HIER|.
De broncodes van het document zijn beschikbaar |HIER|.
Het MVC-model (Model-View-Controller) streeft naar een duidelijke scheiding tussen de presentatie-, verwerkings- en gegevenslaag. Een webapplicatie die dit model volgt, zal als volgt zijn opgebouwd:
![]() |
Een dergelijke architectuur wordt vaak een 3-tier-architectuur of een architectuur met drie lagen genoemd:
- de gebruikersinterface is de weergave (V)
- de applicatielogica is de controller (C)
- de gegevensbronnen vormen het model (M)
De gebruikersinterface is vaak een webbrowser, maar het kan ook een stand-alone applicatie zijn die via het netwerk verzoeken HTTP naar de webservice stuurt en de resultaten die deze terugstuurt, opmaakt. De applicatielogica bestaat uit scripts die de verzoeken van de gebruiker verwerken. De gegevensbron is vaak een database, maar het kunnen ook eenvoudige platte bestanden zijn, een directory LDAP, een externe webservice, ... De ontwikkelaar doet er goed aan een grote onafhankelijkheid tussen deze drie entiteiten te handhaven, zodat als er één verandert, de andere twee niet of nauwelijks hoeven te veranderen.
De architectuur MVC is zeer geschikt voor webapplicaties die zijn geschreven in objectgeoriënteerde talen. De taal PHP (4.x) is niet objectgeoriënteerd. Toch kan men zich inspannen om de code en de architectuur van de applicatie zo te structureren dat deze dichter bij het MVC-model komt:
- De bedrijfslogica van de applicatie wordt ondergebracht in modules die gescheiden zijn van de modules die de vraag-antwoorddialoog regelen. De architectuur MVC ziet er dan als volgt uit:
![]() |
In het blok [Logique Applicative] kunnen we het volgende onderscheiden:
- het hoofdprogramma of de controller, dat de toegangspoort tot de applicatie vormt.
- het blok [Actions], een verzameling scripts die de door de gebruiker gevraagde acties uitvoeren.
- het blok [Classes métier], dat de PHP-modules bevat die nodig zijn voor de logica van de applicatie. Deze zijn onafhankelijk van de client. Zo hoeft de functie die een belasting berekent op basis van bepaalde gegevens die als parameters worden doorgegeven, zich bijvoorbeeld niet bezig te houden met de manier waarop deze gegevens zijn verkregen.
- het blok [Classes d'accès aux données], dat de PHP-modules bevat die de benodigde gegevens voor de controller ophalen, vaak persistente gegevens (BD, bestanden, ...)
- de generatoren van de weergaven die als antwoord naar de klant worden verzonden.
In de eenvoudigste gevallen is de applicatielogica vaak teruggebracht tot twee modules:
- de module [contrôle] die de communicatie tussen client en server verzorgt: verwerking van het verzoek, genereren van de verschillende antwoorden
- de module [métier], die van de module [contrôle] te verwerken gegevens ontvangt en deze module op zijn beurt de resultaten terugstuurt. Deze module [métier] beheert vervolgens zelf de toegang tot de persistente gegevens.

