scabbiafw / scabbia2-router

此包已被废弃,不再维护。作者建议使用eserozvataf/scabbia2-router包。

Scabbia2 路由组件

v0.1.2 2015-09-16 07:03 UTC

This package is not auto-updated.

Last update: 2022-02-01 12:51:13 UTC


README

此组件是一个简单的路由分配器,用于解析和分配路由到回调或控制器。

Build Status Scrutinizer Code Quality Total Downloads Latest Stable Version Latest Unstable Version Documentation Status

使用方法

创建路由定义

use Scabbia\Router\RouteCollection;

$routes = new RouteCollection();

// adding a static route
$routes->addRoute('GET', '/about', 'AboutController::IndexAction');

// adding a static route with multiple http methods
$routes->addRoute(['GET', 'POST'], '/about', 'AboutController::IndexAction');

// adding a dynamic route
$routes->addRoute('GET', '/users/profile/{id:[a-z]+}', 'UsersController::ProfileAction');

// adding a dynamic route with a routing name
$routes->addRoute('GET', '/users/posts/{id:[a-z]+}', 'UsersController::PostsAction', 'user/posts');

保存路由定义

file_put_contents('routes.json', json_encode($routes->save()));

重新加载路由定义

$routes = json_decode(file_get_contents('routes.json'));

分配路由

use Scabbia\Router\Router;

$router = new Router($routes); // initialize a new router with route definitions
$route = $router->dispatch('GET', '/about');

if ($route['status'] === Router::FOUND) {
  call_user_func($route['callback'], ...$route['parameters']);
}

使用名称进行反向路由

use Scabbia\Router\Router;

$router = new Router($routes); // initialize a new router with route definitions

echo $router->path('users/posts', [ 'id' => 'eser' ]);

链接

贡献

任何贡献都公开开放。欢迎提交错误修复、新功能和额外模块。所有贡献都应该在eserozvataf/scabbia2-router仓库中提交。

  • 要贡献代码:Fork 仓库,将您的更改推送到您的分支,并提交一个 pull request。
  • 要报告错误:如果某些功能不起作用,请使用 GitHub 问题报告。
  • 要支持: Donate