mangopeaches / slim-route-groups
为slim路由器提供的包装器,简化了路由定义和组织。
v1.0.1
2019-05-25 17:22 UTC
Requires
- php: >=5.6
Requires (Dev)
- phpunit/phpunit: ^5
- slim/slim: ^3.1
This package is auto-updated.
Last update: 2024-09-26 06:50:40 UTC
README
为slim路由器提供的包装器,简化了路由定义和组织。
演示应用
要查看一个可用的演示实现,请参阅SlimRouteGroupsDemo
安装
composer require mangopeaches/slim-route-groups
问题
如果您的组织正在使用Slim框架进行任何相当规模的API项目,您可能有很多路由。
如果您没有认真思考,很快就会得到一个看起来类似于以下的路由文件。
$app->group('/users', function($app) { $app->get('', 'Path\To\Users:getAll'); $app->post('', 'Path\To\Users:create'); }); $app->group('/books', function($app) { $app->get('', 'Path\To\Books:getAll'); $app->post('', 'Path\To\Books:create'); });
这可以维持一段时间,但是当您开始开发重叠的部分,添加选项路由,或者有多个开发者更改routes.php时,这种设置可能会开始引起一些麻烦。
解决方案
一点规划就能走很长的路。本项目旨在根据资源或您理想中的逻辑分组来分离您的路由,以避免冲突噩梦,并保持路由的隔离和简单。
让我们用新的方式做上面提到的事情。
我们会创建两个独立的路由文件。
UsersRoutes.php
<?php use SlimRouteGroups\Routes; class UsersRoutes extends Routes { /** * Define user routes. */ public function __invoke() { $self = $this; $this->group('/users', function($app) use ($self) { $self->get('', 'Path\To\Users:getAll'); $self->post('', 'Path\To\Users:create'); }); } }
BooksRoutes.php
<?php use SlimRouteGroups\Routes; class BooksRoutes extends Routes { /** * Define books routes. */ public function __invoke() { $self = $this; $this->group('/books', function($app) use ($self) { $self->get('', 'Path\To\Books:getAll'); $self->post('', 'Path\To\Books:create'); }); } }
这并不是一个疯狂的概念,但我们从一开始就避免了合并冲突,如果您使用控制器,您的*Routes.php文件可以很容易地映射到控制器结构。