2015-12-15 46 views
0

下午好,我不明白這一點例外Laravel 5.1命名空間的控制器給反射異常

ReflectionException在Container.php行737:類應用程序\ HTTP \ \控制器登錄\ 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/" 
} 
}, 

我controllers目錄是這樣

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

在此先感謝

編輯:爲什麼當我使用這樣的命名空間沒有與我的模型文件的問題:

命名空間的用戶;

在我的config認證方式,我有這樣的:

'模型'=>用戶\用戶:類,

回答

2

你的控制器是登錄命名空間,而應該是在app \ Http \ Controllers \ Login命名空間中。

在composer.json沒有條目可以改變PHP的命名空間的工作方式 - 在那裏可以只是用來告訴自動加載到哪裏尋找自定命名空間物理文件的映射。

+0

,當我用laravel 4我並不需要把應用程序/模型或應用程序/控制器,我認爲與類映射改變它的工作。在composer.json – user2876735

+0

類映射屬性是有告訴自動加載磁帶機在哪裏可以找到不遵循PSR-0或PSR-4約定類。無論是作曲或自動加載磁帶機可以改變的事實,你的控制器在「登錄」命名空間 –

+1

避免使用類映射功能,如果你的代碼可以符合PSR-4。它會隱藏錯誤地命名或放置在文件系統中的錯誤,並且需要更多時間來創建自動加載器,因爲必須掃描目錄樹以查找php文件並解析類。 – Sven