Define routes and controllers with annotations for Slim 3
Via Composer
composer require dilsonjlrjr/slim3-annotation
In file public/index.php add:
<?php
$pathController = __DIR__ . '/../Controller';
\Slim3\Annotation\Slim3Annotation::create($app, $pathController, '');
The attribute $app is an instance of \Slim\App.
The attribute $pathController is the location of the controllers in the application.
<?php
/**
* @Route("/prefix")
*/
class ClassController {
/**
* @Get(name="/rota2/{id}", alias="rote.id")
*/
public function method() {
}
}
In creating a controller you can define grouping of routes, verbs, routes, aliases and middlewares.
<?php
/**
* @Get(name="/rota2", alias="rote.id")
*/
public function method() {
}
<?php
/**
* @Post(name="/rota2/{id}", alias="rote.id")
*/
public function method() {
}
<?php
/**
* @Put(name="/rota2/{id}", alias="rote.id")
*/
public function method() {
}
<?php
/**
* @Put(name="/rota2/{id}", alias="rote.id")
*/
public function method() {
}
The alias use is optional.
Regular expressions can be used in the creation of routes. All route controls can be seen in the Slim framework documentation: Router.
<?php
/**
* @Route("/prefix")
*/
class ClassController {
/**
* @Get(name="/rota2/{id}", alias="rote.id")
*/
public function method() {
}
}
Route groups only work on the controller header.
In the example above the route will be created as below:
http://localhost/prefix/rota2/1
<?php
/*
* @Get(name="/rota2", alias="rote.id", middleware={"Test\Middleware\ExampleMiddleware"})
*/
public function method() {
}
/**
* @Get(name="/rota3", alias="rote.id", middleware={"Test\Middleware\ValidateMiddleware", "Test\Middleware\ExampleMiddleware"})
*/
public function method() {
}
A route can incorporate several middlewares. How to create a middleware is available in the Slim framework documentation: Middleware.