Roteamento com parâmetros nomeados em PHP
Vamos considerar uma das expressões regulares que processam URL:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
Neste caso, acontece que nosso parâmetro vai para a captura. Em seguida, extraímos o valor do parâmetro da captura pelo seu número:
<?php
$slug = $params[1];
?>
Isso, na verdade, não é muito elegante, especialmente se houver vários parâmetros. Uma ideia mais bem-sucedida seria fazer parâmetros com nomes em vez de números. Para isso, usamos capturas nomeadas na nossa regex:
<?php
if (preg_match('#^/page/(?<slug>[a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
Nesse caso, poderemos obter o valor do parâmetro pelo seu nome:
<?php
$slug = $params['slug'];
?>
Altere os parâmetros nas rotas do seu mecanismo para nomeados.