Package Data | |
---|---|
Maintainer Username: | markusjwetzel |
Maintainer Contact: | markuswetzel@gmx.net (Markus J. Wetzel) |
Package Create Date: | 2015-11-25 |
Package Last Update: | 2019-11-22 |
Home Page: | |
Language: | PHP |
License: | MIT |
Last Refreshed: | 2024-12-19 03:07:37 |
Package Statistics | |
---|---|
Total Downloads: | 10,441 |
Monthly Downloads: | 166 |
Daily Downloads: | 14 |
Total Stars: | 10 |
Total Watchers: | 3 |
Total Forks: | 4 |
Total Open Issues: | 3 |
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:
php artisan route:scan
to register all routes.php artisan route:clear
to clear the registered routes.php artisan event:scan
to register all event bindings.php artisan event:clear
to clear the registered events.<?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');
}
}
<?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
{
...
}
<?php
namespace App\Handlers\Events;
use ProAI\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.