kyleblanker / php-router
PHP 路由器
v1.0.0
2017-05-07 20:43 UTC
Requires (Dev)
- phpunit/phpunit: ~5.7
This package is not auto-updated.
Last update: 2024-09-20 20:56:55 UTC
README
这只是我在瞎搞,我可能不会在项目中使用这个
PHP 路由器
一个简单的 PHP 路由器。
支持的 HTTP 方法
- GET
- POST
- PUT
- DELETE
- HEAD
- PATCH
- OPTIONS
- CONNECT
示例
创建路由器
$router = new \KyleBlanker\Router();
创建基本路由
$router = new \KyleBlanker\Router(); $router->route('GET','/my-route',function(){ echo 'This is my route'; });
路由变量
路由变量用{}
括起来。
$router = new \KyleBlanker\Router(); $router->route('GET','/my-route/{variable}',function($variable){ echo 'This is my route variable ' . $variable; });
路由分组
路由分组会在路由路径上添加前缀。
$router = new \KyleBlanker\Router(); $router->group('/my-group', function($router){ $router->route('GET','/my-route',function(){ echo 'This is my route'; }); });
这将创建一个/my-group/my-route
的路由。
正则表达式
$router = new \KyleBlanker\Router(); $router->route('GET','/my-route/{id:/[^0-9]/}',function($id){ echo 'This is my route'; });
这个路由将只允许/my-route后面的数字0-9。正则表达式键由:
之前的内容定义。
替代路由调用
$router = new \KyleBlanker\Router(); $router->get('/get-route',function(){ echo 'This is my get route'; }); $router->post('/post-route',function(){ echo 'This is my post route'; }); $router->any('/any-route',function(){ echo 'This is my any route'; });
路由器配置允许你根据支持的HTTP方法调用方法。它还允许你调用$router->any()
,这将创建一个支持所有HTTP方法的路由。
分发路由
$router = new \KyleBlanker\Router(); $router->route('GET','/my-route/{id:/[^0-9]/}',function($id){ echo 'This is my route'; }); try { $response = $router->dispatch($_SERVER['REQUEST_METHOD'],$_SERVER['REQUEST_URI']); } catch(\KyleBlanker\Routing\Exceptions\RouteNotFoundException $e) { // A route was not found } catch(\KyleBlanker\Routing\Exceptions\MethodNotAllowedException $e) { // A route was found, but the http method was not supported. } $route_handler = $response[Router::ROUTE_HANDLE]; $route_parameters = $response[Router::ROUTE_PARAMETERS];
如果没有找到匹配项,则会抛出\KyleBlanker\Routing\Exceptions\RouteNotFoundException
异常。如果找到匹配项,但该路由不支持该HTTP方法,则会抛出\KyleBlanker\Routing\Exceptions\MethodNotAllowedException
异常。路由处理程序可以是任何你想要的东西,例如一个字符串来调用某种控制器或闭包。这个包将留给你自己。路由参数是一个关联数组,键是路由路径中提供的键,例如/my-route/{name}{id:/[^0-9]/}
可能是['name' => 'kyle', 'id' => 1]
。