deva7mad / lumen-annotations
Laravel Lumen route and event binding annotations generate
Requires
- php: >=5.5.9
- doctrine/annotations: ~1.6
This package is auto-updated.
Last update: 2024-11-12 11:25:23 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 run the following command
composer require deva7mad/lumen-annotations
After that copy config/annotations.php
from this package to your configuration directory.
Finally: Add this lines to bootstrap/app.php
file:
$app->configure('annotations');
$app->register(DevA7mad\Annotations\AnnotationsServiceProvider::class);
Include generated routes
Once you have run php artisan route:scan
(NOTE: see below Examples), you have to include the generated generated.php
file in your bootstrap/app.php
file:
require __DIR__.'/../routes/generated.php';
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:
For events:
Method Annotations
For routes:
Commands
After you have defined the routes and event bindings via annotations, you have to run the scan command:
- Use
php artisan route:scan
to register all routes. - Use
php artisan route:clear
to clear the registered routes. - Use
php artisan event:scan
to register all event bindings. - Use
php artisan event:clear
to clear the registered events.
Examples
Example #1
<?php namespace App\Http\Controllers; use DevA7mad\Annotations\Annotations as Route; /** * Class annotation for UserController (belongs to all class methods). * * @Route\Controller(prefix="admin") */ class UserController { /** * Method annotations for showProfile($id) method. * @param $id * @Route\Get("profiles/{id}", as="profiles.show") * @return mixed */ public function showProfile($id) { return $id; } }
Example #2
<?php namespace App\Http\Controllers; use DevA7mad\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 DevA7mad\Annotations\Annotations\Hears; /** * Annotation for event binding. * * @Hears("UserWasRegistered") */ class SendWelcomeMail { ... }
Support
Bugs and feature requests are tracked on GitHub.
Author
- Ahmad Elkenany - Development - Linkedin
License
This package is released under the MIT License.
Support on Beerpay
Hey dude! Help me out for a couple of 🍻!