2016-07-23 73 views
2

我在laravel的命名空間中掙扎。在做完laravel之後,我有一個標準的文件夾結構。我添加了一個名爲數據訪問的應用程序文件夾中的文件夾,所以我把我所有的數據訪問類中,以便其具有以下結構:Laravel 5.2命名空間

PROJECTDIR>應用程序>數據訪問> dataaccessclasses(文件)

和我所有的數據訪問類有每個班級頂部的名稱空間App(我只是爲了簡單起見而這麼做)。現在,在我的控制器我補充這個要頂,所以我可以用我的數據訪問類:

<?php use App; ?> 

但Laravel告訴我,它無法找到我的數據訪問類,並試圖解決它相對於控制器的命名空間。下面是它吐在我的錯誤:

ReflectionException在Container.php行794:類 應用程序\ HTTP \ \控制器StockDataAccess不存在。

任何人都可以說明這一切意味着什麼?

回答

1

app文件夾默認如下PSR-4自動加載的規範

所以,在你app文件夾的子文件夾中聲明的類時,你不應該使用App命名空間,但是相對於特定的子文件夾的路徑的命名空間。

例如,對於這個類:

app > dataaccess > dataaccessclasses > StockDataAccess.php 

你應該使用:

namespace App\dataaccess\dataaccessclasses\StockDataAccess; 

在你的類定義文件。要使用這個類在控制器中,你應該使用:

use App\dataaccess\dataaccessclasses\StockDataAccess; 
+0

嘗試這樣做,就像你說的它仍然會以相同的錯誤結束。我正在閱讀關於psr-4的內容,瞭解這一切意味着什麼,但可悲的是,她不工作 –

+0

@Eagletrophy:它給你同樣的錯誤?如果你在你的控制器中使用'使用App \ dataaccess \ dataaccessclasses \ StockDataAccess;',至少它應該在那個目錄中尋找類,給你另一個錯誤。對於PSR-4,以app文件夾內的現有Laravel類(例如http/middleware ecc)爲例:您會看到每個類的名稱空間總是依賴於類文件路徑 – Moppo

+0

我檢查了什麼我反對你剛剛解釋的,我仍然得到同樣的東西。這真是令人沮喪,因爲即使在使用php-fig瀏覽PSR-4文檔之後,我仍然沒有看到我的錯誤在哪裏。我只會在我的控制器中寫入我的數據訪問代碼,忘記這樣做。但是,這感覺就像一個laravel bug,我不能正確解析窗口或路徑中的路徑。無論如何感謝您的幫助moppo –

0

您需要使用「應用程序\的DataAccess \ dataaccessclasses」更新composer.json 的類映射和運行作曲家轉儲