Laravel 流明反射异常
Laravel Lumen ReflectionException
我已经看过其他 post 关于如何修复 laravel Lumen 中的 ReflectionException 问题,使用这个:
$request = Illuminate\Http\Request::capture();
$app->run($request);
但是它并没有解决我的问题。我有一个名为 AccountController.php 的控制器,放在 app/Http/Controllers/Account 文件夹中,代码如下:
<?php
namespace App\Http\Controllers\Account;
use App\Account;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AccountController extends Controller {
public function createNewAccount(Request $request) {
$newAccount = Account::create($request->all());
return response()->json($newAccount);
}
}
这是我放在 /routes/web 中的路由文件。php:
<?php
$app->get('/hello', function () use ($app) {
return 'Hello World!';
});
$app->group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers\Account'], function($app)
{
$app->post('account','AccountController@createNewAccount');
});
当我用 Postman 测试 get 请求时,returns 一个简单的 'Hello World' 工作正常,但是 POST 调用 api/v1/account/createNewAccount 无论我做什么都会失败:
ReflectionException in Container.php line 681:
Class App\Http\Controllers\App\Http\Controllers\Account\AccountController does not exist
in Container.php line 681
at ReflectionClass->__construct('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Container.php line 681
at Container->build('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Container.php line 565
at Container->make('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Application.php line 208
at Application->make('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in RoutesRequests.php line 677
at Application->callControllerAction(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 644
at Application->callActionOnArrayBasedRoute(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 629
at Application->handleFoundRoute(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 528
at Application->Laravel\Lumen\Concerns{closure}() in RoutesRequests.php line 782
at Application->sendThroughPipeline(array(), object(Closure)) in RoutesRequests.php line 534
at Application->dispatch(object(Request)) in RoutesRequests.php line 475
at Application->run(object(Request)) in index.php line 29
我正在使用 "laravel/lumen-framework": "5.4.*".
这个问题没有回复,我决定用 Dingo API 构建我的 API: https://github.com/dingo/api 这是一个很好的包来构建 API Laravel/lumen。他们创建了自己的路由系统,此后一切都变得更好了。
我已经看过其他 post 关于如何修复 laravel Lumen 中的 ReflectionException 问题,使用这个:
$request = Illuminate\Http\Request::capture();
$app->run($request);
但是它并没有解决我的问题。我有一个名为 AccountController.php 的控制器,放在 app/Http/Controllers/Account 文件夹中,代码如下:
<?php
namespace App\Http\Controllers\Account;
use App\Account;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
class AccountController extends Controller {
public function createNewAccount(Request $request) {
$newAccount = Account::create($request->all());
return response()->json($newAccount);
}
}
这是我放在 /routes/web 中的路由文件。php:
<?php
$app->get('/hello', function () use ($app) {
return 'Hello World!';
});
$app->group(['prefix' => 'api/v1','namespace' => 'App\Http\Controllers\Account'], function($app)
{
$app->post('account','AccountController@createNewAccount');
});
当我用 Postman 测试 get 请求时,returns 一个简单的 'Hello World' 工作正常,但是 POST 调用 api/v1/account/createNewAccount 无论我做什么都会失败:
ReflectionException in Container.php line 681: Class App\Http\Controllers\App\Http\Controllers\Account\AccountController does not exist in Container.php line 681 at ReflectionClass->__construct('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Container.php line 681 at Container->build('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Container.php line 565 at Container->make('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in Application.php line 208 at Application->make('App\Http\Controllers\App\Http\Controllers\Account\AccountController') in RoutesRequests.php line 677 at Application->callControllerAction(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 644 at Application->callActionOnArrayBasedRoute(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 629 at Application->handleFoundRoute(array(true, array('uses' => 'App\Http\Controllers\App\Http\Controllers\Account\AccountController@createNewAccount'), array())) in RoutesRequests.php line 528 at Application->Laravel\Lumen\Concerns{closure}() in RoutesRequests.php line 782 at Application->sendThroughPipeline(array(), object(Closure)) in RoutesRequests.php line 534 at Application->dispatch(object(Request)) in RoutesRequests.php line 475 at Application->run(object(Request)) in index.php line 29
我正在使用 "laravel/lumen-framework": "5.4.*".
这个问题没有回复,我决定用 Dingo API 构建我的 API: https://github.com/dingo/api 这是一个很好的包来构建 API Laravel/lumen。他们创建了自己的路由系统,此后一切都变得更好了。