Чистый PHP, никаких фреймворков, проект пишу для собственного удовольствия и учебы. Хочу сделать динамическую URI на манер фреймворков, например, при подтверждении аккаунта сделать общую страницу подтверждения для разных хэшей (надеюсь понятно объяснил). За ограничитель динамической части URI я решил взять символы { }.
Сразу оговорюсь, роутинг без этой хрени, рабочий.
<?php
namespace App\Router;
class Route
{
private $uri;
private $callable;
public function __construct($uri, $callable)
{
$match = '';
preg_match('#%7B(.+)%7D#', $uri, $match);
if (!empty($match)) {
$this->uri = preg_replace('#%7B(.+)%7D#', $match[1], $uri);
} else {
$this->uri = $uri;
}
$this->callable = $callable;
}
}
Класс проверки Роутов:
<?php
namespace App\Router;
class Router
{
public function checkRoute($routes)
{
foreach ($routes as $elem) {
if ($elem->uri == $_SERVER['REQUEST_URI']) {
return call_user_func($elem->callable);
}
}
}
}
Например, роут выглядит вот так: Route('/index/df/{sometext}', [RegistrationController::class, 'testfunction']).
Ничего не работает. Я попросту не могу понять принцип, как объяснить роутеру, какая часть будет динамичная. Я пишу регулярку, она вроде рабочая, но сама по себе она не несет практической пользы, потому что она просто удаляет символы {}. Помогите, пожалуйста. Хочу сам разобраться с роутерами и прочим, чтобы в дальнейшем примерно понимать, что и как работает а не тупо заучивать фреймворки