Я пытаюсь работать с простым классом Router (изучая основы до фреймворка, но я думаю, что что-то не так с примером маршрутизатора, который я использовал. Ниже приведен очень маленький класс маршрутизатора, который я получил от коллеги и попытался интегрировать это в моем коде, чтобы заменить предыдущее использование, где я только что использовал echo раньше (закомментировал часть кода). loginController showLoggedInUser () и registerController index () просто используются для визуализации html шаблона.
Обе функции $ router-> add () будут работать, если я использую его только для добавления одного маршрута, однако мой маршрутизатор не сохраняет несколько маршрутов в массиве, потому что кажется, что каждый маршрут будет сохранен под ключом '/' и в случае, если я предоставить несколько маршрутов, кажется, мои предыдущие маршруты просто перезаписаны. Поэтому я думаю, мне нужно будет настроить класс маршрутизатора. Как я могу это исправить?
PHP 7.4 используется
Маршрутизатор. php
<?php
declare(strict_types=1);
class Router
{
private array $route;
public function add(string $url, callable $method): void
{
$this->route[$url] = $method;
}
public function run()
{
$path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
if(!array_key_exists($path, $this->route))
{
exit();
}
return call_user_func($this->route[$path]);
}
}
index. php
<?php
declare(strict_types=1);
require __DIR__ . '/../vendor/autoload.php';
session_start();
$router = new Router();
$mysqliConnection = new MysqliConnection();
$session = new SessionService();
$loginController = new Login($mysqliConnection);
$router->add('/', [$loginController, 'showLoggedInUser']);
//echo $loginController->showLoggedInUser();
$registerController = new Register($mysqliConnection);
$router->add('/', [$registerController, 'index']);
//echo $registerController->index();
echo $router->run();