boke0/skull

PSR7兼容的路由库。

2.2.4 2020-03-20 22:51 UTC

This package is auto-updated.

Last update: 2024-09-21 20:46:26 UTC


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方法。