用php写一个类,实现url路由
封面图
•
2025-12-28
•
PHP
389
0
0
0
当然可以!下面是一个使用 PHP 编写的简单 URL 路由类示例。这个类可以根据请求的 URL 路径,匹配对应的控制器和方法,并执行相应的逻辑。 --- ### ✅ 示例:一个简单的 URL 路由类 ```php <?php class Router { private $routes = []; /** * 注册路由 * @param string $method HTTP 方法(GET, POST 等) * @param string $path 路径 * @param callable|string $handler 处理器(可以是函数、闭包或控制器方法) */ public function route($method, $path, $handler) { $this->routes[] = [ 'method' => $method, 'path' => $path, 'handler' => $handler ]; } /** * 执行路由 */ public function run() { $requestMethod = $_SERVER['REQUEST_METHOD']; $requestUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); foreach ($this->routes as $route) { if ($route['method'] === $requestMethod && $requestUri === $route['path']) { $handler = $route['handler']; // 如果是字符串(如 "Controller@method"),则解析并调用 if (is_string($handler)) { list($controller, $method) = explode('@', $handler); $controllerInstance = new $controller(); $controllerInstance->$method(); } else if (is_callable($handler)) { // 如果是闭包或函数,直接调用 $handler(); } return; } } // 如果没有匹配到路由,返回 404 http_response_code(404); echo "404 Not Found"; } } ``` --- ### ✅ 使用示例 #### 1. 定义一个控制器类: ```php <?php class HomeController { public function index() { echo "Welcome to the home page!"; } public function about() { echo "This is the about page."; } } ``` #### 2. 使用 Router 类: ```php <?php require 'Router.php'; require 'HomeController.php'; $router = new Router(); // 添加路由 $router->route('GET', '/', 'HomeController@index'); $router->route('GET', '/about', 'HomeController@about'); // 执行路由 $router->run(); ``` --- ### ✅ 进阶功能建议(可选) 你可以扩展这个类来支持以下功能: - 参数捕获(如 `/user/:id`) - 正则表达式匹配 - 中间件支持 - 命名路由 - 支持 POST 请求等 --- 如果你需要更高级的功能(如参数匹配、中间件、RESTful 路由等),也可以告诉我,我可以帮你实现一个更完整的版本。
上一篇:
php实现只允许get,post访问
下一篇:
php金额大小写转换的方法
标题录入,一次不能超过6条
留言
评论