Routování s pojmenovanými parametry v PHP
Podívejme se na jeden z regulárních výrazů, které zpracovávají URL:
<?php
if (preg_match('#^/page/([a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
V tomto případě se stane, že náš parametr skončí v zachytávací skupině. Poté hodnotu parametru získáme z této skupiny podle jeho čísla:
<?php
$slug = $params[1];
?>
To ve skutečnosti není příliš elegantní, zvlášť když bude parametrů více. Lepší nápad je vytvořit parametry s jmény namísto čísel. K tomu použijeme pojmenované zachytávací skupiny v našem regulárním výrazu:
<?php
if (preg_match('#^/page/(?<slug>[a-z0-9_-]+)$#', $url, $params)) {
$page = include 'view/page/show.php';
}
?>
V takovém případě budeme moci získat hodnotu parametru podle jeho jména:
<?php
$slug = $params['slug'];
?>
Přepracujte parametry v routech vašeho enginu na pojmenované.