我最近将一个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条答案
按热度按时间scyqe7ek1#
从classmap中删除
"app/Http/Controllers"
。在
use
块上方添加namespace App\Http\Controllers;
。然后运行
composer dump-auto
jbose2ul2#
我很确定你必须添加命名空间。
命名空间
默认情况下,Laravel 4应用程序不会在应用程序代码中使用命名空间。例如,所有Eloquent模型和控制器都位于“全局”名称空间中。为了更快地迁移,你可以简单地将这些类留在Laravel 5的全局命名空间中。
shyt4zoc3#
如果你的控制器在一个文件夹中而不是app/Http/Controller,你应该像这样声明命名空间:
注意事项:
再加上这个:
否则会发生此错误:
qyswt5oh4#
我也有同样的问题,这是我的解决方案,也许它可以帮助你。添加命名空间App\Http\Controllers;<?php
mefy6pfw5#
创建自动发现事件及其监听器类时,只需在监听器类顶部添加以下命名空间即可避免此错误: