mattvb91 / lightrouter
轻量级路由器
0.1.0
2017-06-28 16:26 UTC
Requires
- php: >=7.1
Requires (Dev)
- phpunit/phpunit: ^6.2
- satooshi/php-coveralls: ^1.0
This package is auto-updated.
Last update: 2024-09-14 21:06:02 UTC
README
LightRouter
LightRouter
轻量级PHP路由器类。这是一个测试项目。如果您需要一个可靠且经过充分测试的解决方案,请查看FastRoute或AltoRouter。
基本用法
$router = new mattvb91\LightRouter\Router(); $router->addRoute('/', MyController::class); $router->run();
定义路由
要添加新路由,请使用$router->addRoute()方法。如果没有定义操作,它将默认为index,这是在您的控制器上需要的。
您需要传递路由路径和控制器或闭包。如果您未指定操作,它将默认为'index',这是在您的控制器上需要的。
$router->addRoute('/', MyController::class); $router->addRoute('/contact', MyController::class, 'contact'); $route->addRoute('/hello', function() { echo 'Hello world'; });
定义参数
您可以使用路由定义中的:parameter属性将参数传递到您的控制器操作中
$router->addRoute('/view/:param', MyController::class);
您的函数参数必须与定义的路由参数匹配。在我们的例子中,我们的控制器view方法将如下所示
public function view($param) { }
自动注入模型
如果您正在使用针对数据库模型的LightModel ORM包,您可以通过在控制器操作中指定实例类型来自动注入相关模型
//Your route definition $router->addRoute('/user/view/:user', UserController::class, 'view'); //In your UserController::class public function view(User $user) { //$user is already fully loaded for you. }
如果您正在使用自己的ORM或其他数据库模型类,您也可以在自定义模型中实现LightRouteModelInterface::class,该接口期望您返回一个完全加载的实例。
LightRouter会将您的路由中的相关$key传递到getForLightRoute方法中
public class CustomModel implements LightRouteModelInterface { public static function getForLightRoute($routeParam): LightRouteModelInterface { //Use $routeParam to load your model class and return the instance } }