Vandaag mijn eerste ervaring opgedaan met Codeigniter, een open source framework voor PHP. Frameworks zijn er gekomen omdat programmeurs bij het opzetten van een nieuw project telkens opnieuwe dezelfde code moeten maken om te connecteren met een database, objecten maken, formulieren valideren, enz… Met een framework is deze codde direct voor je beschikbaar en kan je onmiddellijk starten met het echte werk. Een dergelijk famework stelt je dus in staat om makkelijker, sneller en ook meer gestructureerd een nieuwe PHP applicatie op poten te zetten, nu ja makkelijker vind ik het nog niet. Met de documentatie kan je al snel een “hello world” tevoorschijn toveren, maar wil je een website opzetten waarbij er bijv items opgedeeld worden in categorieën, dan ben je wel even bezig om alles aan te maken.
Het systeem werkt op basis van MVC (Model, View, Controller). Een controller verzorgt de functionaliteit, een model bevat de inhoud en de variabelen van de objecten waar je mee werkt en de view bevat HTML code voor het weergeven van je data. Op deze manier krijg je een mooie scheiding tussen je business logic en je user inferface waardoor naar onderhoud toe, de zaken wel heel wat makkelijker worden.
Naar structuur opbouw van mijn urls ben ik er nog niet helemaal uit. Ik wil die graag zeer goed kunnen controleren, maar bij dit framework slaag ik er nog niet in om de urls te maken zoals ik het zelf wil. Die werken namelijk volgens het volgende principe:
/blog/categorie/test/
Als je naar die url surft, dan zoekt hij eerst de controller “blog”, binnen die controller zou een functie moeten zitten met de naam “categorie”, en die functie categorie krijgt de variabele “test” doorgestuurd. Echter, wanneer ik een url als volgt wil maken: /blog/nieuwspost-item/ dan ontbreekt eigenlijk mijn “functie” in de url, dus daar moet ik nog even op zoeken.
Ik ga eens kijken of het niet op te lossen valt met de routes, daarmee kun je namelijk instellen welke urls naar welke controllers moeten gestuurd worden, voor het geval je niet tevreden bent met de standaard koppeling tussen url en controller.
Naaste Codeigniter zijn Cake PHP en Zend wel de meest bekende. Deze systemen hebben een gelijkaardige werking met Codeigniter en zijn beiden ook open source. Cake PHP heb ik ook al eens kunnen testen, ook een framework dat zeker de moeite waard is om even uit te proberen, die heeft trouwens User authentication standaard ingebouwd, en dat is iets wat in het framework van Codeigniter jammer genoeg ontbreekt.