当然,我可以为你提供一个基本的PHP类示例,用于处理RESTful请求的路由。请注意,这个示例是基于简单的URL解析和分发逻辑,没有使用任何框架或中间件。
<?php
class Router
{
protected $routes = [];
public function addRoute($method, $pattern, $handler)
{
$this->routes[$method][$pattern] = $handler;
}
public function dispatch()
{
$method = $_SERVER['REQUEST_METHOD'];
$uri = $_SERVER['REQUEST_URI'];
// 移除查询字符串
if (($pos = strpos($uri, '?')) !== false) {
$uri = substr($uri, 0, $pos);
}
// 尝试匹配路由
if (isset($this->routes[$method])) {
foreach ($this->routes[$method] as $pattern => $handler) {
if (preg_match('#^' . str_replace('/', '\/', $pattern) . '$#', $uri)) {
// 调用处理器
call_user_func($handler);
return;
}
}
}
// 如果没有找到匹配的路由,返回404
http_response_code(404);
echo 'Not Found';
}
}
// 使用示例
$router = new Router();
$router->addRoute('GET', '/', function() {
echo 'Home Page';
});
$router->addRoute('GET', '/about', function() {
echo 'About Page';
});
// 分发请求
$router->dispatch();
这个`Router`类允许你添加路由规则,并通过`dispatch`方法根据HTTP请求方法和URI分发请求到对应的处理器(在这个例子中是匿名函数)。路由匹配是通过正则表达式实现的,但在这个简单的例子中,我们直接使用了完整的URI路径作为模式字符串,并通过`preg_match`进行匹配。
请注意,这个示例非常基础,并且没有处理URL参数或复杂的路由逻辑。在实际应用中,你可能会需要使用更成熟的路由库或框架来处理RESTful请求。