Laravel route controller
This library like other existing, give a way to deal with Router::controller.
The key features:
* allow caching of route
* doesn't require extra manipulation
* allow inheritance of route group
* namespace independent, (*1)
Compatible with laravel 5.5. (probably compatible with older version too)., (*2)
Install
Install the dependencies, (*3)
composer require grummfy/laravel-route-controller
Publish the configuration, (*4)
php artisan vendor:publish --tag=config --provider=Grummfy\LaravelRouteController\RouteControllerProvider
Usage
Once the package is install and autodiscover (or you have added the provider manually), the package is ready to use., (*5)
In your route file, just do this:, (*6)
Route::controller('/foo', \App\Http\Controllers\FooController::class);
It will take all the public method from the class (including traits) and convert it to route., (*7)
There is a third argument that you can use to add extra option, like a middleware or anything else., (*8)
Route::controller('/foo', \App\Http\Controllers\FooController::class, ['middleware' => 'can:baz']);
You got also an extra option, to don't allow heritance of methods from parent:, (*9)
Route::controller('/foo', \App\Http\Controllers\FooController::class, ['middleware' => 'can:baz', 'heritage' => false]);
Example
Imagine that we have the class FooController (see example), in this case we will have a series of method that will be converted to routes:
* index() -> /foo, foo.index
* getStatus(string $status) -> /foo/status/{status}, foo.status.post
* postStatus(string $status) -> /foo/status/{status}, foo.status.get
* foo() -> /foo/foo, foo.foo
* my() -> /foo/my, foo.my, (*10)
TODO
- unit test
- QA tools
- travis
- styleci
- scrutinizer
- ...
Alternative
- https://github.com/lesichkovm/laravel-advanced-route
- https://github.com/themsaid/laravel-routes-publisher
- https://github.com/shrimpwagon/laravel-route-controller
- https://www.larablocks.com/package/eightyfive/laravel-autoroute
- https://gist.github.com/cotcotquedec/df15f9111e5c8d118ac270f6a157c460
- ...