Я строю свой собственный фреймворк для учебных целей, и он до сих пор довольно хорош, кроме одного, маршрутизации.Url Routing Placeholder Matching Regex
Скажем, URL-адрес localhost/admin/view, у меня нет проблем с этим маршрутом с правильным контроллером и действиями. Проблема возникает, когда url имеет идентификатор, похожий на следующий: localhost/admin/view/12. Я пытаюсь использовать заполнители в моем массиве маршрутов (каркасный подход), который содержит определенные маршруты для соответствия URL-адресу.
Вот что массив маршрут выглядит следующим образом:
public function getRoute() {
$this->route = array(
[
'url' => "admin/view",
'controller' => 'AdminController',
'action' => 'viewPosts',
'type' => 'GET'
],
[
'url' => "admin/view/{id}",
'controller' => 'AdminController',
'action' => 'viewPostById',
'type' => 'GET'
],
[
'url' => "admin/store/posts",
'controller' => 'AdminController',
'action' => 'storePosts',
'type' => 'POST'
],
);
}
Я не знаю, как в соответствии с URL со значением из массива маршрута, который имеет заполнитель. Например, если url - localhost/admin/view/1, как я могу сопоставить его со значением admin/view/{id} из массива? А потом как мне легко получить параметр GET из URL? Я знаю, что получение параметров не должно быть слишком сложным, но я пытаюсь получить их, не взрывая URL-адрес и не выполняя слишком много операций (возможно, с регулярным выражением?).
Возможно, я не очень хорошо его объяснял, но мой .htaccess перенаправляет все на index.php с чистым URL-адресом, как это делают рамки. Я просто просил заполнителя, как {id}, потому что так работает laravel. Btw admin/view /.* Я уже пробовал что-то подобное с admin/view /. \ D * $, но я не нашел его довольно, я хотел быть с заполнителями. Не могли бы вы немного объяснить, как внутренний механизм фреймворков обычно работает для маршрутизации, а не как их использовать, но больше похоже на то, как фреймворки обрабатывают URL-адрес так, как они разделяют его и отправляют и т. Д.? –