mangopeaches/slim-route-groups

为slim路由器提供的包装器,简化了路由定义和组织。

v1.0.1 2019-05-25 17:22 UTC

This package is auto-updated.

Last update: 2024-09-26 06:50:40 UTC


README

Build Status

为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文件可以很容易地映射到控制器结构。