Omdat je deze code maar één keer maakt is het niet zo belangrijk om dit zelf te kunnen. (copy-paste) is genoeg.
In PHP zitten een groot aantal voorgedefinieerde variabele. Eén daarvan, $_SERVER, deze hebben we nodig. Let op onderstaande code is best ingewikkeld. Als je het niet helemaal begrijpt geen zorgen. Copy-paste is genoeg.
index.php
<pre> <?php var_dump($_SERVER); die(); ?> </pre>
De var_dump()
funtie zal de inhoud van een variabele op het scherm schrijven. Als deze klaar is wordt de die()
functie aangeroepen en zal verdere uitvoer van het script stoppen.
Als we weer naar http://localhost
gaan is alles nu wat beter leesbaar.
Wij zijn voor onze router geïntresseerd in $_SERVER['REQUEST_URI'] in deze variabele is te zien welke url wordt opgevraagd.
Typ maar eens achter http://localhost/home
["REQUEST_URI"]=> string(17) "/home"
Of bij http://localhost/home?id=20
["REQUEST_URI"]=> string(23) "/home?id=20"
Wij gaan nu deze variabele gebruiken om onze router te maken.
Als eerst moeten we de query requests zoals id=20 van de url verwijderen. Daarvoor kunnen we gebruik maken van de functie parse_url()
. De functie geeft een array terug
Probeer maar
<pre> <?php var_dump(parse_url($_SERVER['REQUEST_URI'])); die(); ?> </pre>
Als je naar http://localhost/home?id=20 gaat
array(2) { ["path"]=> string(17) "/home" ["query"]=> string(5) "id=20" }
Wij willen nu alleen 'path' hebben. Dan kan eenvoudig door
<pre> <?php var_dump(parse_url($_SERVER['REQUEST_URI'])['path']); die(); ?> </pre>
Met als resultaat
string(17) "/home"
Als we nu ook nog de /
ervoor weghalen dan hebben we 'home' over.
Het weghalen van de /
kan door de trim()
functie.
$uri = trim(parse_url($_SERVER['REQUEST_URI'])['path'], "/");
Bij http://localhost/home?id=20 wordt $uri => "home"
Bij http://localhost/producten/nieuw wordt $uri => "producten/nieuw"
Bij http://localhost/contact.php zal het index bestand niet worden aanroepen maar het bestand contact.php