2014-01-27 226 views
5

當決定將文件夾放置到app\文件夾中的資源時,我經常會發現它存在問題。Laravel文件夾結構

我應該在哪裏放置的東西,如model observersvalidatorsform macrosrepositories ....目前我這樣做

\app 
    \models 
    \controllers 
    \repositories 
    \observers 
    \interfaces 
    \validators 
    \views 

雖然我看到有些人做到以下幾點:

\app 
    \models 
    \controllers 
    \views 
    \YourAppNameHere 
     \Services 
     \validators 
     \... 

我不明白\ Acme文件夾背後的原因,它與實際應用程序相同嗎?

+0

他們都很好,挑選最適合你的人。真的,不要擔心這一點,堅持一個,你很好走。 – Andreyco

+3

有人看Laracasts :) – mikedugan

回答

8

最好的方法掌握Laravel文件夾結構是把app目錄當作 框架的前端。如果你看看git repository,你會發現它們是分開的 - 你可以克隆核心庫,你可以單獨克隆laravel應用程序。應用程序和子文件夾代表了框架的一種使用方式。當然,它的設計與最佳實踐有關。退房還核心框架測試目錄 - 那裏Laravel開發人員處理庫爲「無頭」 - 沒有應用程序。對我而言,這是我需要掌握Laravel的一切。

因此,您可以自由修改現有結構,但請記住,有些更改要求您對作曲家dump-autoload-主要是因爲命名空間。

+0

謝謝,這是一個開始尋找的好地方。我猜我的核心擔心是我經常看到網絡上的人構建他們的文件夾在 / /駐留在'/ app'下並創建適當的名稱空間。我只是尋找最好,最清晰,最「雄辯」的結構。 – AndrewMcLagan

1

簡而言之,這完全是一個偏好問題,以及您和您的團隊如何最大限度地提高可讀性,這就是說,在所有項目中保持一致性是很好的。

+2

對任何結構如此開放的主要問題是......這並沒有真正的幫助 – AndrewMcLagan

7

總的來說,Laravel可以以任何最適合您的方式構建。有些人更喜歡默認體系結構,而其他像基於域的體系結構。

我的兩個現有項目與此不同,使用類似:

/app 
    /database 
    /controllers 
    /bin 
    /views 
    /config 
    /storage 

我把我的很多自定義功能在服務提供商,雖然我在bin/一些通用的助手和我的行車路線和過濾器。

你可以做任何你想做的事情,只要確保你相應地更新了你的composer.jsonapp/start/global.php以確保正確的類是自動加載的。並確保你命名空間正確的一切!

下面是我的composer.json和global.php的只是一個想法有關章節的例子:

composer.json

"autoload": { 
    "classmap": [ 
     "app/commands", 
     "app/controllers", 
     "app/database/models", 
     "app/database/migrations", 
     "app/database/seeds" 
    ] 
}, 

app/start/global.php

ClassLoader::addDirectories(array(

app_path().'/commands', 
app_path().'/controllers', 
app_path().'/bin', 
    app_path().'/database/models', 
    app_path().'/database/seeds', 

)); 
require app_path().'/bin/filters.php'; 
require app_path().'/bin/helpers.php'; 
require app_path().'/bin/events.php';