marciodojr/slim-route-annotations

在控制器/动作中编写精简的路由

v1.0.0 2018-11-18 11:47 UTC

This package is auto-updated.

Last update: 2024-09-19 01:01:36 UTC


README

允许您从控制器和动作中的注释创建路由

如何使用

安装

composer require marciodojr/slim-route-annotations

配置

在您的设置数组中添加键 routeAnnotations。每个 routeAnnotations 数组中的元素都是一个关联数组,包含

  • dir:控制器/动作所在的目录
  • namespacePrefix:您控制器/动作的命名空间前缀。例如,对于类 SomeVendor\\Controller\\MyNiceControllernamespacePrefixSomeVendor\\Controller
<?php

// settings.php

return [
    'settings' => [
        'displayErrorDetails' => true,
        // ...
        // add this
        'routeAnnotations' => [
            [
                'dir' => __DIR__ . '/Action', // action/controller folder
                'namespacePrefix' => 'Mdojr\\SlimAnnotations\\Test\\Action' // action/controller namespace prefix
            ]
        ]
    ]
];

Slim\App 替换为 Mdojr\SlimAnnotations\App

<?php

// index.php
// $app = new Slim\App($config)
$app = new Mdojr\SlimAnnotations\App($config)

注意:当使用 routerCacheFile 选项时,您需要先删除缓存文件。如果文件存在,则不会解析注释。

用法

@Route 注释添加到您想绑定路由的方法。属性 methodsmiddlewares 是可选的,如果未指定属性 methods,则允许所有方法(类似于 Slim 中的 $app->any)。

<?php

namespace Mdojr\SlimAnnotations\Test\Action;

use Mdojr\SlimAnnotations\Annotation\Route;

class MyController
{
    /**
     * @Route(
     *      pattern="/test-annotated-middleware",
     *      methods={"GET"},
     *      middlewares={
     *          "Mdojr\SlimAnnotations\Test\Middleware\SomeMiddleware",
     *          "Mdojr\SlimAnnotations\Test\Middleware\SomeOtherMiddleware"
     *      }
     * )
     */
    public function myAction($request, $response)
    {
        // some code ...
    }
}

测试

vendor/bin/phpunit --testdox