nicc0 / slim-annotation-router
Slim 4的Slim Annotation Router
0.5.1
2021-03-15 18:49 UTC
Requires
- php: ^7.1 || ~8.0
- doctrine/annotations: ~1.6
- slim/slim: ~4.0
Requires (Dev)
- phpunit/phpunit: >=7.5
- slim/http: ^1.2
- slim/psr7: ^1.3
README
为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许可证。有关更多信息,请参阅许可证文件。