我最近将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/"
}
},
到目前为止我找不到任何解决方案,所以如果你们知道该怎么做它会帮助我很多:)提前感谢!
答案 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