nicc0 / slim-annotation-router

Slim 4的Slim Annotation Router

0.5.1 2021-03-15 18:49 UTC

This package is auto-updated.

Last update: 2024-09-04 12:09:54 UTC


README

Latest Version on Packagist Latest PHP Version License Build Status Coverages

Slim 4.x的Annotation Router

安装

建议使用Composer安装Slim Annotation Router。

$ composer require "nicc0/slim-annotation-router"

这将安装Slim Annotation Router及其所有依赖项。请记住,Slim 4.x需要PHP 7.1或更高版本。

使用方法

$factory = new DecoratedResponseFactory( new ResponseFactory(), new StreamFactory() );
$resolver = new CallableResolver();

$controllerPath = './app/controllers/';

$collector = new AnnotationRouteCollector( $factory, $resolver, $container );
$collector->setDefaultControllersPath( $controllersPath );
$collector->collectRoutes();

$app = new App( $factory, $container, $resolver, $collector );

通过注解创建路由

/**
 * Class ExampleController
 *
 * @RoutePrefix("/example")
 */
class ExampleController
{
    /**
     * @Route("/hello", methods={"GET"}, name="example.hello")
     *
     * @return \Psr\Http\Message\ResponseInterface
     */
    public function hello(): ResponseInterface
    {
        $response = new Response();
        $response->getBody()->write('Hello world!');

        return $response;
    }
}

通过打开URL http://your_site_url/example/hello,你应该看到"Hello world!"。

通过注解向控制器添加中间件

要向控制器或操作添加中间件,请使用@Middleware("")注解,传入中间件的名称。重要的是要知道我们传入的名称必须在容器中定义。名称作为AnnotationRouteCollector构造函数的第三个参数传递。同样重要的是,添加的中间件必须实现MiddlewareInterface,否则中间件将不会添加到路由。

还可以向控制器或操作添加多个中间件。

例如,我们必须向控制器添加AuthMiddleware。首先,我们必须在容器中定义AuthMiddleware。

$container->set('authMiddleware', function() use ($container) {
    return new AuthContainer(container);
})

如果中间件存在于我们的容器中,现在我们可以通过在控制器中添加@Middleware("authMiddleware")来使用中间件注解。

/**
 * @RoutePrefix("/example")
 * @Middleware("authMiddleware")
 */
class ExampleController
{
    /**
     * @Route("/hello", methods={"GET"}, name="example.hello")
     */
    public function hello(): ResponseInterface
    {
        ...
    }
}

测试

要执行测试套件,您需要安装所有开发依赖项。

git clone https://github.com/Nicc0/Slim-Annotation-Router
composer install
composer test

许可证

Slim Annotation Router遵循MIT许可证。有关更多信息,请参阅许可证文件