2012-04-01 94 views
0

我正在使用MVC模塊化結構,就像您可以與Zend一樣(我沒有使用Zend)。目錄結構如下:使用模塊化文件夾結構?

/www 
    /Config 
    /Modules 
    /default 
     /controllers 
     indexController.php 
     loginController.php 
     /models 
     /views 
    blog 
     /controllers 
     indexController.php 
     /models 
     /views 
... 

我對這個結構有幾個問題。我在我的「默認」文件夾中有一個loginController。顯然,用戶轉到該頁面進行登錄。

登錄後的用戶可以在博客上張貼一些內容。但這是我的問題所在。不同的模塊如何共享數據,如用戶數據?

在這種情況下,「默認」模塊也會有一個「userModel」。但博客還顯示了「最新用戶」列表。所以它需要訪問位於「默認」模塊內部的userModel。

我可以想到更多的例子,某個模塊需要來自另一個模塊的數據。

但是這意味着'模塊'幾乎總是依賴於另一個模塊。所以這就是爲什麼我在這個結構中看不到任何用途。或者我在這裏做錯了什麼.. ??

+0

有沒有想過背後不能訪問一些其他模塊的模型?在genereal中,您將只有一個用戶表和一個訪問者會話,並且這些對象應該可以在任何模塊中訪問。 – Basti 2012-04-01 13:03:18

+0

@Basti嗯,我認爲一個'模塊'應該是一個獨立的東西。所以假設你是在同一個框架上工作,那麼如果你在我的應用程序中使用'模塊',那麼這將是沒有問題的。但是如果一個模塊依賴於另一個模塊(比如查詢某個模型的數據),那麼這個結構有什麼用?我可能只是使用「控制器」,「模型」和「視圖」文件夾結構,而不是像我上面描述的那樣分離它。 – w00 2012-04-01 13:12:25

+0

模塊之間的依賴關係不應該是一個問題。 – Basti 2012-04-01 13:15:44

回答

1

我實際上會重新考慮你在模塊中的確切位置。

模型層的結構應該在不同的模塊之間共享(也就是你的命名約定很糟糕:模塊,模型,模型,模塊,模塊模型......混淆)。模塊在那裏打包與交互相關的部分。

當您使用表示「文章」的域業務對象時,邏輯不會奇蹟般地從模塊更改爲模塊。相反,每個用戶可以用它做什麼都是有限的。取決於,如果用戶被授權執行一些命令或不。

您可能會從閱讀此SO topic受益匪淺..雖然更關注控制器級別的授權,但同樣的想法可應用於域對象。

此外,你應該仔細閱讀M.福勒的文章GUI Architectures

0

看起來'模塊'方法是不適合在這裏。在MVC中,您只有三個實體:模型視圖和控制器。正如你所提到

控制器可以加載任何模型,例如:post_controller既需要用戶模型,以便讓它是這樣的。由於模型表示數據,因此讓兩個用戶模型執行相同的操作是不正確的。

所以我會擺脫模塊的方式,因爲它是一種反模式,你注意到,當通過所有的應用程序開始重複類和/或代碼。