Я нахожусь в процессе создания своего собственного класса маршрутизатора URL для облегченной инфраструктуры MVC. Я реализовывал простую систему, основанную на массивах, и выяснил, какие параметры в серии циклов и т. Д. Я прошел книгу django, и мне нравится их система простого сопоставления с шаблоном и вызова класса и метода, если шаблон соответствует. У меня это работает хорошо, но я застрял на картировании двух разных шаблонов, и по общему признанию я не лучший в регулярных выражениях.
поэтому у меня есть массив шаблонов URL и соответствующих классов / методов:
'/^\/users\/(?P<username>\w+)$/' => array('class' => 'userController', 'method' => 'detailUserAction'),
'/^\/users\/update$/' => array('class' => 'userController', 'method' => 'updateUserAction'),
и первый шаблон всегда сопоставляется с чем-либо еще, начинающимся с / users и имеющим что-то еще после него.
Позже в коде я перебираю массив и выполняю этот код:
if (preg_match($urlPattern, $pathString, $matches)){
$this->invokeObject($command, $matches);
exit;
}
Любые идеи о том, какой шаблон я могу использовать, чтобы различать эти два URL-адреса?
один - / пользователи / имя пользователя
, а другой - / users / update
Полагаю, я всегда могу сначала включить остальные в порядке в массиве, это мой лучший вариант?