не работает

Я использую структуру Lumen в первый раз, маршрут / мой HomeController не работает.

Это мой route.php:

 $app->get('/', 'HomeController@index'); 

Но я получаю следующую ошибку:

 [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} 

Это мой HomeController.php in / app / Http / Controllers /

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

В чем проблема?

Вы должны использовать полное имя класса:

 $app->get('/', 'App\Http\Controllers\HomeController@index'); 

ИЛИ заверните все маршруты в группе (это на самом деле то, как это делается под капотом в Laravel 5)

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

Сейчас он не документирован, но вам нужно использовать полный путь пространства имен к контроллеру.

Таким образом, ваш маршрут будет выглядеть так:

 $app->get('/', 'App\Http\Controllers\HomeController@index'); 

Разница заключается в RouteServiceProvider, который поставляется с Laravel, который можно найти в приложении / Providers / RouteServiceProvider.php, проверьте метод карты, он выглядит следующим образом

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

Таким образом, все ваши маршруты приложений фактически сгруппированы в пространство имен по умолчанию, которое обычно является App \ Http \ Controllers.

Надеюсь, это поможет!

Взгляните на файл /bootstrap/app.php Там вы можете сделать некоторые настройки. Также в нижней части файла вы найдете следующие строки.

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

Который должен обслуживать ваши вызовы с правильным пространством имен.

Также вы можете активировать настройки .env прямо там 🙂

Взгляните на это сообщение https://mattstauffer.co/blog/introducing-lumen-from-laravel

Надеюсь, это поможет кому-то! 🙂