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

6qfn3psc  于 2023-06-25  发布在  其他
关注(0)|答案(5)|浏览(104)

我最近将一个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/"
    }
},

到目前为止我还没有找到任何解决方案,所以如果你们知道该怎么做,这将对我有很大的帮助:)提前感谢!

scyqe7ek

scyqe7ek1#

从classmap中删除"app/Http/Controllers"
use块上方添加namespace App\Http\Controllers;
然后运行composer dump-auto

jbose2ul

jbose2ul2#

我很确定你必须添加命名空间。
命名空间
默认情况下,Laravel 4应用程序不会在应用程序代码中使用命名空间。例如,所有Eloquent模型和控制器都位于“全局”名称空间中。为了更快地迁移,你可以简单地将这些类留在Laravel 5的全局命名空间中。

shyt4zoc

shyt4zoc3#

如果你的控制器在一个文件夹中而不是app/Http/Controller,你应该像这样声明命名空间:

namespace App\Http\Controllers\folder-name;

注意事项:
再加上这个:

use App\Http\Controllers\Controller;

否则会发生此错误:

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

qyswt5oh4#

我也有同样的问题,这是我的解决方案,也许它可以帮助你。添加命名空间App\Http\Controllers;<?php

mefy6pfw

mefy6pfw5#

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

namespace App\Listeners;

相关问题