我正在尝试用PHP创建基本路由器,但只有索引路由有效(“”)。
当我尝试其他路线(例如“登录”)时,出现404错误。
我的路由器:
class Router {
private $routes = [];
public function __construct($routes)
{
$this->routes = $routes;
}
public function directTo($uri)
{
if (array_key_exists($uri, $this->routes)) {
return $this->routes[$uri];
}
throw new \Exception("Route not found", 1);
}
}
路由文件:
return [
'' => 'controllers/IndexController.php',
'login' => 'controllers/LoginController.php',
'register' => 'controllers/RegisterController.php',
'logout' => 'controllers/LogoutController.php',
];
应用程序入口点(index.php):
require_once "vendor/autoload.php";
use App\Controllers\Router;
$routes = require_once "routes.php";
$uri = trim($_SERVER["REQUEST_URI"],'/');
$router = new Router($routes);
require $router->directTo($uri);
我认为问题可能与index.php中的$ uri变量有关,但我无法查明问题所在。
当我像这样对$ uri进行硬编码时:
require $router->directTo("login");
它就像一种魅力。