boke0 / skull
PSR7兼容的路由库。
2.2.4
2020-03-20 22:51 UTC
Requires
- psr/container: ^1.0
- psr/http-factory: ^1.0
- psr/http-message: ^1.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- mockery/mockery: ^1.3
- phpunit/phpunit: ^8.4
README
无特殊功能的小型框架系列「骨 - Hone -」的路由机制。
安装
可以使用composer进行安装。
composer require boke0/skull
用法
路由定义
路由可以根据请求时的方法进行定义。
<?php require("vendor/autoload"); use Boke0\Skull\Router; $router=new Router(); $router->get("/foo","hello_get"); //GETメソッド $router->post("/bar","hello_post"); //POSTメソッド $router->put("/hoge","hello_put"); //PUTメソッド $router->delete("/piyo","hello_delete"); //DELETEメソッド ?>
第二个参数指定的是匹配时执行的函数名。也可以直接指定闭包。如果要为所有方法进行路由,可以使用any方法。
... $router->any("/spam","hello_any"); ...
如果要为多个方法进行批量路由,可以使用map方法。
... $router->map("/spam","hello_any"); ...
路由
通过将路径传递给match方法,在路由定义之后执行路由。
<?php require("vendor/autoload"); use Boke0\Skull\Router; $router=new Router(); $router->get("/foo","hello_get"); //GETメソッド $router->post("/bar","hello_post"); //POSTメソッド $router->put("/hoge","hello_put"); //PUTメソッド $router->delete("/piyo","hello_delete"); //DELETEメソッド $function_name=$router->match($_SERVER["PATH_INFO"]); ?>
match方法返回路由定义时指定的函数名。
PSR15中间件
通过使用同包中实现的Dispatcher类,可以将其集成到遵守PSR的框架中。
<?php require("vendor/autoload"); use Boke0\Skull\Router; use Boke0\Skull\Dispatcher; $router=new Router(); ... /* ここでルートを定義 */ ... $dispatcher=new Dispatcher($router,$container); ?>
- Dispatcher类
- 参数
- $router: Router类实例
- $container: DI容器实例
- 参数
通过将生成的实例作为中间件传递给请求处理器等,对PSR7兼容的请求接口进行路由。
此外,在利用Dispatcher进行路由时,用点号`.`分隔的函数名将前半部分视为类名,后半部分视为方法名。如果只指定类名而不使用点号`.`,则执行该类的handle方法。