deva7mad / lumen-annotations by a17mad

Laravel Lumen route and event binding annotations generate
Package Data
Maintainer Username: a17mad
Maintainer Contact: (Ahmad Elkenany)
Package Create Date: 2018-10-05
Package Last Update: 2020-01-12
Language: PHP
License: MIT
Last Refreshed: 2021-04-29 03:22:22
Package Statistics
Total Downloads: 199
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 1
Total Watchers: 2
Total Forks: 0
Total Open Issues: 0

Lumen Annotations

Latest Stable Version Total Downloads Latest Unstable Version License

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 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:

Include generated routes

Once you have run php artisan route:scan (NOTE: see below Examples), you have to include the generated routes.php file in your bootstrap/app.php file:

require __DIR__.'/../storage/framework/routes.php';


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.


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.


Example #1

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="")
     * @return mixed
    public function showProfile($id)
        return $id;

Example #2

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

namespace App\Handlers\Events;

use DevA7mad\Annotations\Annotations\Hears;

 * Annotation for event binding.
 * @Hears("UserWasRegistered")
class SendWelcomeMail


Bugs and feature requests are tracked on GitHub.


  • Ahmad Elkenany - Development - Linkedin


This package is released under the MIT License.

Support on Beerpay

Hey dude! Help me out for a couple of :beers:!

Beerpay Beerpay