This package enables annotations in Laravel Lumen to define routes and event bindings.
Lumen Annotations is distributed as a composer package. So you first have to add the package to your composer.json file:
"proai/lumen-annotations": "~1.0"
Then you have to run composer update to install the package. Once this is completed, you have to add the service provider in bootstrap/app.php:
$app->register(ProAI\Annotations\AnnotationsServiceProvider::class);
Copy config/annotations.php from this package to your configuration directory to use a custom configuration file.
Once you have run php artisan route:scan (see below), you have to include the generated routes.php file in your bootstrap/app.php file:
require__DIR__.'/../storage/framework/routes.php';After you have executed php artisan event:scan (see below), you have to add the service provider to the providers array in config/app.php:
'ProAI\Annotations\EventServiceProvider'
By using annotations you can define your routes directly in your controller classes and your event bindings directly in your event handlers (see examples for usage of annotations).
For routes:
| Annotation | Description |
|---|---|
@Controller | This annotation must be set to indicate that the class is a controller class. Optional parameters prefix and middleware. |
@Resource | First parameter is resource name. Optional parameters only and except. |
@Middleware | First parameter is middleware name. |
For events:
| Annotation | Description |
|---|---|
@Hears | This annotation binds an event handler class to an event. |
For routes:
| Annotation | Description |
|---|---|
@Get,@Post,@Options,@Put,@Patch,@Delete,@Any | First parameter is route url. Optional parameters as and middleware. |
@Middleware | First parameter is middleware name. |
After you have defined the routes and event bindings via annotations, you have to run the scan command:
- Use
php artisan route:scanto register all routes. - Use
php artisan route:clearto clear the registered routes. - Use
php artisan event:scanto register all event bindings. - Use
php artisan event:clearto clear the registered events.
<?phpnamespaceApp\Http\Controllers;
useProAI\Annotations\AnnotationsasRoute;
/** * Class annotation for UserController (belongs to all class methods). * * @Route\Controller(prefix="admin") */class UserController
{
/** * Method annotations for showProfile() method. * * @Route\Get("/profiles/{id}", as="profiles.show") * @Route\Middleware("auth") */publicfunctionshowProfile()
{
returnview('profile');
}
}<?phpnamespaceApp\Http\Controllers;
useProAI\Annotations\AnnotationsasRoute;
/** * Class annotations for resource controller CommentController (belongs to all class methods). * * @Route\Controller * @Route\Resource("comments", only={"create", "index", "show"}) * @Route\Middleware("auth") */class CommentController
{
...
}<?phpnamespaceApp\Handlers\Events;
useProAI\Annotations\Annotations\Hears;
/** * Annotation for event binding. * * @Hears("UserWasRegistered") */class SendWelcomeMail
{
...
}Bugs and feature requests are tracked on GitHub.
This package is released under the MIT License.