php artisan 路线上的ReflectionException错误

问题描述 投票:0回答:4

每次运行

php artisan routes
时,都会收到
ReflectionException
错误,并且
UsersController
类不存在。我很确定确实如此。

我尝试了

php composer dump-autoload
php artisan clear-compiled
,它们都给出了相同的错误。

这是我的错误日志

/app/storage/logs/

[2014-03-30 01:41:24] production.ERROR: exception 'ReflectionException' with message 'Class UsersController does not exist' in C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php:28
Stack trace:
#0 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\ControllerInspector.php(28): ReflectionClass->__construct('UsersController')
#1 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Routing\Router.php(269): Illuminate\Routing\ControllerInspector->getRoutable('UsersController', 'users')
#2 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Support\Facades\Facade.php(211): Illuminate\Routing\Router->controller('users', 'UsersController')
#3 C:\wamp\www\re3\app\routes.php(14): Illuminate\Support\Facades\Facade::__callStatic('controller', Array)
#4 C:\wamp\www\re3\app\routes.php(14): Illuminate\Support\Facades\Route::controller('users', 'UsersController')
#5 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\start.php(269): require('C:\wamp\www\re3...')
#6 [internal function]: {closure}(Object(Illuminate\Foundation\Application))
#7 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(792): call_user_func(Object(Closure), Object(Illuminate\Foundation\Application))
#8 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(569): Illuminate\Foundation\Application->fireAppCallbacks(Array)
#9 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Foundation\Application.php(552): Illuminate\Foundation\Application->bootApplication()
#10 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Console\Application.php(44): Illuminate\Foundation\Application->boot()
#11 C:\wamp\www\re3\vendor\laravel\framework\src\Illuminate\Console\Application.php(33): Illuminate\Console\Application::make(Object(Illuminate\Foundation\Application))
#12 C:\wamp\www\re3\artisan(46): Illuminate\Console\Application::start(Object(Illuminate\Foundation\Application))
#13 {main} [] []
laravel laravel-4 composer-php
4个回答
10
投票

不知何故 Laravel 无法找到你的 UsersController,运行

composer dumpautoload

然后检查文件

vendor/composer/autoload_classmap.php
,你的UsersController必须在那里,否则composer将无法自动加载它,Laravel将无法访问它。

如果你在 int 中找不到你的控制器,你必须检查:

1)你的composer.json文件,你的控制器所在的文件夹必须位于:

"autoload": {
    "classmap": [
        "app/controllers",
                  ....
    ],

2)检查你的类名称是否正确。

3) 如果您使用命名空间:

类 UsersController 扩展控制器 { ... }

您必须在对它的引用中使用命名空间,在这种情况下,使用 PSR-4(甚至 PSR-0)来自动加载您的类可能会更好。

4) 将 autoload_classmap.php 中的类与不存在的类进行比较。命名或目录放置一定存在差异。

5)检查你的课程是否都以

开头
<?php 

不仅仅是

<?

这对于 Composer 和 PHP 来说可能不会产生太大的影响,但对于 Laravel 来说却是这样。


0
投票

在控制器文件中检查命名空间。

例如,

namespace App\Http\Controllers\home;

在上面的名称空间中,控制器文件应该存在于主文件夹中。如果它存在于主文件夹中,并且如果我没有在上面包含 home,则会出现反射错误。

简单来说,命名空间应该对应控制器文件所在的文件夹结构。


0
投票

就我而言,我有两个同名但位于不同位置的控制器:

app\Http\Controllers\Auth\PasswordController.php

app\Http\Controllers\Admin\Auth\PasswordController.php

最后一张

app\Http\Controllers\Admin\Auth\PasswordController.php

有一个错误的命名空间(namespace App\Http\Controllers\Auth;而不是**命名空间App\Http\Controllers\Admin\Auth;*),因此我不断收到ReflectionException异常


0
投票

同样的问题也发生在我身上。我只是忘记将请求库放入控制器头中。只需将以下行添加到控制器的使用声明中即可。

use Illuminate\Http\Request;

这对我来说是工作。

© www.soinside.com 2019 - 2024. All rights reserved.