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

Добър ден, не разбирам това изключение

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

Знам, че това е свързано с пространството от имена, но конфигурирах автоматичното си зареждане на composer.json. Когато го промених на app\Http\Controllers\Login, работи добре. Направих също занаятчийско изчистване и автоматично зареждане на дъмп на композитор

Моят клас е такъв

<?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

Благодаря предварително

Редактиране: Защо нямам проблеми с моите модели файлове, когато използвам пространство от имена като това:

потребителско пространство от имена;

В моето удостоверяване на конфигурацията имам това:

'модел' => Потребител\Потребител:клас,


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, нямаше нужда да поставям app/models или app/controllers, мислех, че с промяната на classmap ще работи. - person user2876735; 16.12.2015
comment
classmap атрибут в composer.json е там, за да каже на autoloader къде да намери класове, които не следват конвенцията 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