无法声明类Controller,因为该名称已在使用中

时间:2016-11-03 16:14:14

标签: laravel laravel-5

我最近将laravel 4.2项目迁移到了5.0。到目前为止,我已经完成了所有必要的步骤,但我一直收到错误。

  

无法声明类Controller,因为该名称已在使用中

我的控制器已根据升级指南中的laravel提供的更改。

<?php

use Illuminate\Foundation\Bus\DispatchesCommands;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Foundation\Validation\ValidatesRequests;

abstract class Controller extends BaseController {

    use DispatchesCommands, ValidatesRequests;

}

此外,我已将其添加到composer.json的classmap指令中。

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

到目前为止我找不到任何解决方案,所以如果你们知道该怎么做它会帮助我很多:)提前感谢!

5 个答案:

答案 0 :(得分:13)

从您的类图中删除"app/Http/Controllers"

namespace App\Http\Controllers;块上方添加use

然后运行composer dump-auto

答案 1 :(得分:3)

我很确定你必须添加命名空间。

  

命名空间

     

默认情况下,Laravel 4应用程序未在您的应用程序代码中使用命名空间。因此,例如,所有Eloquent模型和控制器都只是生活在“全局”命名空间中。为了更快地迁移,您可以将这些类放在Laravel 5中的全局命名空间中。

答案 2 :(得分:1)

创建自动发现事件及其侦听器类时,只需在侦听器类的顶部添加以下名称空间,即可避免此错误:

namespace App\Listeners;

答案 3 :(得分:0)

我在Windows 2012 Server上遇到了这个问题

当我使用xdebug

我开始调试并且一切正常

我的控制器没有问题

<?php

namespace App\Http\Controllers;


use Illuminate\Routing\Controller as BaseController;
use Illuminate\Http\Request;

class HomeController extends BaseController

{

答案 4 :(得分:0)

如果您的控制器位于文件夹而不是app / Http / Controller中,则应声明该名称空间,如下所示:

namespace App\Http\Controllers\folder-name;

注意:

还添加此内容:

use App\Http\Controllers\Controller;

否则会发生此错误:

 Class 'App\Http\Controllers\Controller' not found