Routeren met genaamde parameters in PHP
Laten we een van de reguliere expressies bekijken, die URL's verwerken:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
In dit geval blijkt het dat onze parameter in de capture group terechtkomt. Vervolgens halen we de waarde van de parameter uit de capture group op basis van zijn nummer:
<?php
$slug = $params[1];
?>
Dit is eigenlijk niet erg mooi, vooral als er meerdere parameters zijn. Een betere idee zou zijn om parameters met namen te maken in plaats van nummers. Hiervoor gebruiken we genaamde capture groups in onze reguliere expressie:
<?php
if (preg_match('#^/page/(?<slug>[a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
In dat geval kunnen we de waarde van de parameter ophalen op basis van zijn naam:
<?php
$slug = $params['slug'];
?>
Verbouw de parameters in de routes van je engine naar genaamde.