The idea is good but is not working properly I can't have both $app->XMETHOD and the $app->setDispatcher it's seem like the setDispatcher method is overwriting the others routes:
...
/**
* Principals
*/
$app->get('/addressbooks'.'/{id}', 'WebDavController@addressbooks');
$app->setDispatcher(\FastRoute\simpleDispatcher(function ($r) {
$r->addRoute('PROPFIND', '/principals', 'WebDavController@principals');
$r->addRoute('PROPFIND', '/principals/{id}', 'WebDavController@principals');
...
Apart of that all the wrapping around $app->group won't be applied, no middleware, no namespace:
...
$app->group(['middleware' => 'auth.basic', 'namespace' => 'Motty\Core\Http\Controllers'], function ($app) {
/**
* Principals
*/
...
I'm getting the following error I think because of that:
[2015-06-08 10:09:07] lumen.ERROR: exception 'ErrorException' with message 'Invalid argument supplied for foreach()' in /var/www/core/vendor/laravel/lumen-framework/src/Application.php:1189
Stack trace:
#0 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1189): Laravel\Lumen\Application->Laravel\Lumen\{closure}(2, 'Invalid argumen...', '/var/www/contac...', 1189, Array)
#1 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1171): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array)
#2 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1146): Laravel\Lumen\Application->handleFoundRoute(Array)
#3 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1098): Laravel\Lumen\Application->handleDispatcherResponse(Array)
#4 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1320): Laravel\Lumen\Application->Laravel\Lumen\{closure}()
#5 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1099): Laravel\Lumen\Application->sendThroughPipeline(Array, Object(Closure))
#6 /var/www/core/vendor/laravel/lumen-framework/src/Application.php(1037): Laravel\Lumen\Application->dispatch(NULL)
#7 /var/www/core/public/index.php(28): Laravel\Lumen\Application->run()
#8 {main}
So I think I'm gonna stick with the extended class, as you said is a shame we don't have a public addRoute mehtod :S
Thanks,