el enrutamiento del marco del lumen no funciona

Uso el marco de Lumen por primera vez, la ruta / a mi HomeController no funciona.

Esta es mi ruta.php:

 $app->get('/', '[email protected]'); 

Pero me sale el siguiente error:

 [2015-04-17 07:03:41] lumen.ERROR: exception 'ReflectionException' with message 'Class HomeController does not exist' in /Users/refear99/Web/qingsongchou_api/vendor/illuminate/container/Container.php:776 Stack trace: #0 /Users/refear99/Web/qingsongchou_api/vendor/illuminate/container/Container.php(776): ReflectionClass->__construct('HomeController') #1 /Users/refear99/Web/qingsongchou_api/vendor/illuminate/container/Container.php(656): Illuminate\Container\Container->build('HomeController', Array) #2 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(358): Illuminate\Container\Container->make('HomeController', Array) #3 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1184): Laravel\Lumen\Application->make('HomeController') #4 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1157): Laravel\Lumen\Application->callControllerAction(Array) #5 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1142): Laravel\Lumen\Application->callActionOnArrayBasedRoute(Array) #6 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1120): Laravel\Lumen\Application->handleArrayBasedFoundRoute(Array) #7 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1058): Laravel\Lumen\Application->handleFoundRoute(Array) #8 /Users/refear99/Web/qingsongchou_api/vendor/laravel/lumen-framework/src/Application.php(1006): Laravel\Lumen\Application->dispatch(NULL) #9 /Users/refear99/Web/qingsongchou_api/public/index.php(28): Laravel\Lumen\Application->run() #10 {main} 

Este es mi HomeController.php en / app / Http / Controllers /

 <?php namespace App\Http\Controllers; class HomeController extends Controller { public function index() { echo 123; } } 

¿Cuál podría ser el problema?

Tienes que usar el nombre de clase completo:

 $app->get('/', 'App\Http\Controllers\[email protected]'); 

O envuelva todas las rutas en un grupo (que en realidad es como se hace bajo el capó en Laravel 5)

 $app->group(['namespace' => 'App\Http\Controllers'], function($group){ $group->get('/', '[email protected]'); $group->get('foo', '[email protected]'); }); 

Parece que no está documentado en este momento, pero necesita usar la ruta completa del espacio de nombre al controlador.

Entonces su ruta se vería así:

 $app->get('/', 'App\Http\Controllers\[email protected]'); 

La diferencia radica en el RouteServiceProvider que se envía con Laravel, que se puede encontrar en la aplicación / Providers / RouteServiceProvider.php, consulte el método del mapa, se ve de la siguiente manera

 $router->group(['namespace' => $this->namespace], function($router) { require app_path('Http/routes.php'); }); 

Por lo tanto, todas sus rutas de aplicación se agrupan en un espacio de nombre predeterminado, que generalmente es App \ Http \ Controllers.

¡Espero que ayude!

Eche un vistazo al archivo /bootstrap/app.php Allí puede realizar algunos ajustes. También allí, en la parte inferior del archivo, encontrará las siguientes líneas.

 $app->group(['namespace' => 'App\Http\Controllers'], function ($app) { require __DIR__.'/../app/Http/routes.php'; }); return $app; 

Que debería servir sus llamadas con el espacio de nombres correcto.

También puedes activar la configuración .env allí 🙂

Eche un vistazo a esta publicación https://mattstauffer.co/blog/introducing-lumen-from-laravel

¡Espero que esto ayude a alguien! 🙂