Пространство имен Laravel 5.1 для контроллера дает исключение отражения

Добрый день, я не понимаю это исключение

ReflectionException в строке Container.php 737: класс app\Http\Controllers\Login\LoginController не существует

Я знаю, что это связано с пространством имен, но я настроил автозагрузку composer.json. Когда я изменил его на app\Http\Controllers\Login, он работает нормально. Я также сделал artisan clear-compiled и composer dump-autoload

Мой класс такой

<?php

namespace Login;

use Controller;
use Validator;
use Input;
use Auth;
use Redirect;
use View;

class LoginController extends Controller{}

Моя автозагрузка composer.json

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

Мой каталог контроллеров выглядит так

- app
-- Http
--- Controllers
---- Login
----- LoginController.php
-- Models
--- User
---- User.php

заранее спасибо

Изменить: почему у меня нет проблем с файлами моей модели, когда я использую такое пространство имен:

Пользователь пространства имен;

В моей конфигурации auth у меня есть это:

'модель' => Пользователь\Пользователь:класс,


person user2876735    schedule 15.12.2015    source источник


Ответы (1)


Ваш контроллер находится в пространстве имен Login, тогда как он должен находиться в пространстве имен app\Http\Controllers\Login.

Никакие записи в composer.json не могут изменить способ работы пространств имен PHP — сопоставление там можно просто использовать, чтобы указать автозагрузчику, где искать физические файлы из данного пространства имен.

person jedrzej.kurylo    schedule 15.12.2015
comment
Когда я использовал laravel 4, мне не нужно было ставить приложения/модели или приложения/контроллеры, я думал, что с изменением карты классов это сработает. - person user2876735; 16.12.2015
comment
Атрибут classmap в composer.json указывает автозагрузчику, где найти классы, которые не соответствуют соглашению PSR-0 или PSR-4. Ни композитор, ни автозагрузчик не могут изменить тот факт, что ваш контроллер находится в пространстве имен входа. - person jedrzej.kurylo; 16.12.2015
comment
Избегайте использования функции classmap, если ваш код может соответствовать PSR-4. Это скроет ошибки с неправильно названными или размещенными в файловой системе классами, а создание автозагрузчика займет больше времени, потому что дерево каталогов нужно сканировать на наличие php-файлов и анализировать на наличие классов. - person Sven; 16.12.2015
comment
Спасибо, Свен, мне нужен только этот ответ. я буду использовать конфигурацию автозагрузчика по умолчанию. - person user2876735; 17.12.2015