从5.0升级后,Laravel 5.1抛出ReflectionException

时间:2015-06-18 12:05:19

标签: laravel laravel-5

我最近将Laravel从5.0升级到版本5.1,但每当我向服务器发送API响应时,它都会抛出如下异常:

ReflectionException in RouteDependencyResolverTrait.php line 57: Class App\Http\Requests\User\GetRequest does not exist

升级之前一切正常。

这是 composer.json 文件的autoload部分:

"autoload": {
    "classmap": [
        "database"
    ],
    "psr-4": {
        "App\\": "app/",
        "Bloom\\" : "library/Bloom"
    }
}

可能是因为我在升级过程中出了问题吗?

这是GetRequest类的声明方式:

<?php namespace App\Http\Requests\User;

use App\User;
use App\Http\Requests\Request;
use Illuminate\Support\Facades\Auth;

/**
 * Class GetRequest
 * @package App\Http\Requests\User
 */
class GetRequest extends Request {

更新:我刚刚重新安装了Laravel 5.1并将所有旧文件移至新安装但我仍然收到同样的错误。

更新2 :运行php composer dump-autoload -o后,我发现文件 vendor / composer / autoload_classmap.php 包含Laravel无法找到的类:

 'App\\Http\\Requests\\User\\GetRequest' => $baseDir . '/app/Http/Requests/User/GetRequest.php',

更新3 :我还尝试使用

创建新请求
php artisan make:request TestRequest

然后使用UserController.php中的TestRequest

/**
 * @param GetRequest $request
 * @return \Symfony\Component\HttpFoundation\Response
 */
public function get(TestRequest $request)
{
    if(!$this->userRepository->getUser()) return $this->respondOK('User not found.');

    $user = $this->userRepository->getUser();

    return $this->respondOK('', (new UserTransformer())->transform($user->toArray()));
}

但我仍然收到同样的错误。

2 个答案:

答案 0 :(得分:2)

好的,我找到了解决方案。

我注意到,如果在GetRequest班级中我将use App\Http\Requests\Request;use Request;交换,则会找到GetRequest类,并且不会抛出 ReflectionException 了。

所以问题不在App\Http\Requests\User\GetRequest类,而在抽象类App\Http\Requests\Request中。

在查看我做了更改的App\Http\Requests\Request类之后,我决定用Laravel中的dist版本替换它,然后我重新应用了我的更改。

长话短说:问题发生在App\Http\Requests\Request,因为我对其进行了更改,并且更新了Laravel 5.1后发生了一些变化。

答案 1 :(得分:1)

我遇到了同样的问题。目前我发现解决方案为&#34;使用&#34;在使用新请求类的控制器中。 设置&#34;使用&#34;在控制器中获取请求文件的正确路径:

use App\Http\Requests\Request;
use App\Http\Requests\YOUR_NEW_REQUEST_CLASSRequest;