proai / lumen-annotations
Route and event binding annotations for Laravel Lumen
Installs: 11 948
Dependents: 0
Suggesters: 0
Security: 0
Stars: 10
Watchers: 2
Forks: 4
Open Issues: 3
pkg:composer/proai/lumen-annotations
Requires
- php: >=5.5.9
 - doctrine/annotations: ~1.2
 
This package is not auto-updated.
Last update: 2025-10-26 01:15:19 UTC
README
This package enables annotations in Laravel Lumen to define routes and event bindings.
Installation
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.
Include generated routes
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';
Include generated event bindings
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'
Usage
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).
Class 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. | 
Method Annotations
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. | 
Commands
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. 
Examples
Example #1
<?php namespace App\Http\Controllers; use ProAI\Annotations\Annotations as Route; /** * 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") */ public function showProfile() { return view('profile'); } }
Example #2
<?php namespace App\Http\Controllers; use ProAI\Annotations\Annotations as Route; /** * 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 { ... }
Example #3
<?php namespace App\Handlers\Events; use ProAI\Annotations\Annotations\Hears; /** * Annotation for event binding. * * @Hears("UserWasRegistered") */ class SendWelcomeMail { ... }
Support
Bugs and feature requests are tracked on GitHub.
License
This package is released under the MIT License.