Невозможно объявить класс Controller, так как имя уже используется
Я недавно перенес проект 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;
}
Также я добавил его в директиву classmap моего composer.json.
"autoload": {
"classmap": [
"database",
"app/Http/Controllers"
],
"psr-4": {
"App\\": "app/"
}
},
Пока я не смог найти никакого решения, так что, если вы, ребята, знаете, что делать, это бы мне очень помогло:) заранее спасибо!
7 ответов
Удалить "app/Http/Controllers"
из вашей карты классов.
добавлять namespace App\Http\Controllers;
выше вашего use
блоки.
Тогда беги composer dump-auto
Если у вас есть контроллер внутри папки вместо app / Http / Controller, вы должны объявить это пространство имен следующим образом:
namespace App\Http\Controllers\folder-name;
Примечание:
Добавьте это также:
use App\Http\Controllers\Controller;
В противном случае возникает эта ошибка:
Class 'App\Http\Controllers\Controller' not found
Я уверен, что вы должны добавить пространства имен.
Пространства имен
По умолчанию приложения Laravel 4 не используют пространство имен в коде вашего приложения. Так, например, все модели и контроллеры Eloquent просто жили в "глобальном" пространстве имен. Для более быстрой миграции вы можете просто оставить эти классы в глобальном пространстве имен в Laravel 5.
У меня та же проблема, что и у вас, и это мое решение, чтобы исправить это, возможно, оно вам поможет. Добавить пространство имен App\Http\Controllers; под <?php
При создании событий автоматического обнаружения и их классов слушателей просто добавьте пространство имен ниже в верхней части класса слушателя, чтобы избежать этой ошибки:
namespace App\Listeners;
Если вы используете Laravel 8 или более позднюю версию, вы можете использовать анонимную миграцию, чтобы избежать конфликта с именем класса.
Ниже описано, как объявить анонимную миграцию. Не забудьте точку с запятой в конце.
return new class extends Migration{
//
};
У меня была эта проблема на сервере Windows 2012
когда я использую xdebug
я начинаю отладку и все работает хорошо
в моем контроллере нет проблем
<?php
namespace App\Http\Controllers;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Http\Request;
class HomeController extends BaseController
{