【发布时间】:2015-05-13 12:02:13
【问题描述】:
我正在开发一个用于 php 练习的简单路由器,它已经发展了很多,但我发布了更简单的版本。
我的路由器类检查给定的 url 与当前服务器路径,如果匹配则返回内容。这很好用,但问题是路由器运行了 3 次,因为我在 routes.php 文件中调用了路由器 get() 方法 3 次。
例如,如果我想在路由不匹配时返回 404 错误,它将返回 3 次。每条路线未找到 1 次。解决此问题的最佳方法是什么?
非常感谢您的帮助。
路由器类:
<?php
class Router {
public $currentRoute = '/';
public function __construct()
{
$this->getCurrentRoute();
}
public function getCurrentRoute()
{
if(isset($_SERVER['PATH_INFO'])) {
$this->currentRoute = $_SERVER['PATH_INFO'];
}
}
public function get($route, $content)
{
if($route == $this->currentRoute) {
echo $content();
}
}
}
路线文件:
<?php
$router->get('/', function()
{
return 'Index page';
});
$router->get('movies', function()
{
return Cinematix\View::make('movies');
});
$router->get('users', function()
{
return 'The users collection page';
});
【问题讨论】:
-
我想这必须在很大程度上重写以在不同的问题上实现这一点,因为没有人回答我会尝试用可能的解决方案来更新它,有人可以帮助我解决。
-
我会用包含路由的路由器重写它。因此,您将添加路由而不是 get,然后在路由器内的一个循环中检查所有路由。我相信流行框架中的大多数路由器都是这样制作的。
标签: php oop url routing pathinfo