Прохожу на youtube урок автора по написанию роутера как в laravel и у меня затык. Всё вроде 1:1 как у автора, но
REQUEST_URI в переменную не записывается
private string $requestUri = '/';
private RouteConfiguration $routerConfiguration;
public function __construct(RouteConfiguration $routerConfiguration)
{
$this->routerConfiguration = $routerConfiguration;
}
public function process()
{
$this->saveRequestUri();
}
private function saveRequestUri()
{
if ($this->requestUri !== '/') {
$this->requestUri = $this->clean($_SERVER['REQUEST_URI']);
$this->routerConfiguration->route = $this->clean($this->routerConfiguration);
}
echo '<pre>';
var_dump($this->requestUri);
var_dump($this->routerConfiguration->route);
echo '</pre>';
}
private function clean($str)
{
return preg_replace('/(^\/)|(\/$)/', '', $str);
}
Получается, если в строке браузера не слэш $this->requestUri !== '/' тогда получаем то что в строке браузера и с помощью регулярного выражения заменяем слеш в конце и начале строки на пустоту.
То есть функция с регулярным выражением рабочая
public function clean($str)
{
return preg_replace('/(^\/)|(\/$)/', '', $str);
}
Так же вот это возвращает строку уже без слешей в начале и конце строки браузера:
$this->clean($_SERVER['REQUEST_URI'])
Но прим этом
$this->requestUri пустая, показывает только слэш по умолчанию, а не то что я указываю в строке браузера
$this->requestUri = $this->clean($_SERVER['REQUEST_URI']);
Я получаю это
string(1) "/"
string(6) "/posts"
string(1) "/"
string(13) "/posts/{post}"
А должен получить это
string(7) "post/10"
string(6) "/posts"
string(7) "post/10"
string(13) "/posts/{post}"
При том что если сделать так, посмотреть что у меня внутри, код что надо, но не записывается в
$this->requestUri Что делать не понимаю =(
var_dump($this->clean($_SERVER['REQUEST_URI']));
Подскажите, как это поправить.