De URL class schrijven
Om een klasse te schrijven in PHP dien je rekening te houden met enkele basis regels. Ik ga ze niet allemaal toepassen, maar waar nodig zal ik zeker commentaar geven.
Goed, we verwijzen in onze index.php naar een map genaamd lib waarin onze class.UrlDispatcher.php moet staan.
Trouwens, een gouden regel binnen het OO programmeren is dat een klasse altijd met Hoofdletters begint, om vervolgens over te gaan op CamelCase. Dit betekent in ons geval dat het bestandsnaam dus UrlDispatcher moet heten. Binnen PHP, maar ook zeker in andere talen wordt er vaak class aan toegevoegd. Om zo onderscheid te maken dat het hier om een klasse gaat.
Laten we eens beginnen deze te schrijven:
class.UrlDispatcher.php
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// een klasse in PHP begint altijd met het gereserveerde
// woord: class, gevolgd door de naam van de klasse. Een
// classname zou eigenlijk altijd hetzelfde moeten zijn
// als de naam van het bestand. In ons geval dus
// UrlDispatcher
class UrlDispatcher
{
// hier komt de body van onze klasse. De body van een
// klasse bestaat over het algemeen uit een constructor
// en "methods", oftwel functions in PHP :)
}
?>
We hebben nu een klasse gemaakt, genaamd UrlDispatcher.
Om er voor te zorgen dat wanneer er een instantie ( object ) aangemaakt wordt, er alvast code wordt uitgevoerd, maken we een constructor. Deze functie is uniek, omdat deze ( zonder anders aangegeven ) standaard wordt uitgevoerd.
Het unieke aan een constructor in PHP is dat je deze standaard de naam geeft van de klasse. Dit is in veel talen zo, dus ook in PHP. Onze constructor heet dus ook
UrlDispatcher.
Daarnaast gaan we ook een paar velden toevoegen aan onze klasse. Een veld in een klasse betekent dat we voor elk object variabelen aan maken. Deze variabelen zijn echter ten allen tijde te benaderen ( kom ik later op terug ) en betekenen dat zolang het object bestaat, alle "methods" oftewel functions binnen de klasse gebruik kunnen maken van deze variabelen.
In ons geval zou de constructor zoiets zijn als:
Als je goed kijkt, zie je dat er voor function nog public staat. De public is een "visibility modifier". Dit wil zeggen dat de constructor gewoon aangeroepen kan worden. Als je een constructor bijvoorbeeld private maakt, kun je geen object aanmaken van die klasse. Dit kan handig zijn, maar daar ga ik hier niet verder op in. Ik weet niet eens of een private constructor wel werkt in PHP... Anyone?
In ieder geval, als je dus oplet, zie je dat er bovenin nu 5 private velden bestaan. Private betekent voor een veld dat het ALLEEN benaderd kan worden binnen de klasse zelf. Of eigenlijk nog preciezer, binnen het object.
Om de waardes op te halen, zul je dus getters en setters moeten gebruiken. Oftewel publieke "methods" ( functions ) om deze waarden extern te gebruiken/wijzigen. Getters betekent ophalen van waardes, setters het wijzigen van waardes.
Laten we dit eens uittesten:
Zoals je ziet gebruik je hier $this. $this betekent dat je refereert naar het huidige object. Als er dus een instantie oftewel een object wordt aangemaakt, kun je binnen dat object naar jezelf verwijzen. Je kunt op deze manier methods alsook instantie variabelen aanroepen. Een method ( oftewel functie.. ) roep je aan door: $this->methodName()
Om het niet al te lang te maken, ga ik verder op de volgende pagina :)
Inhoudsopgave
- HTACCES gebruiken
- De index.php maken
- De URL class schrijven
- De URL class af maken
- Ter afsluiting de code