Роутинг с именованными параметрами на PHP

Рассмотрим одно из регулярных выражений, обрабатывающих URL:

<?php if (preg_match('#/page/([a-z0-9_-]+)#', $url, $params)) { $page = include 'view/page/show.php'; } ?>

В данном случае получается, что наш параметр попадает в карман. Затем мы вытаскиваем значение параметра из кармана по его номеру:

<?php $slug = $params[1]; ?>

Это на самом деле не очень красиво, особенно если параметров будет несколько. Более удачной идеей будет сделать параметры с именами вместо номеров. Для этого используем именованные карманы в нашей регулярке:

<?php if (preg_match('#/page/(?<slug>[a-z0-9_-]+)#', $url, $params)) { $page = include 'view/page/show.php'; } ?>

В таком случае мы сможем получить значение параметра по его имени:

<?php $slug = $params['slug']; ?>

Переделайте параметры в роутах вашего движка на именованные.