概述:我正在使用PHP構建一個CMS,並且我正在嘗試使用MVC實現這一點。我試圖使用this structure來擴展我的代碼,因爲它代表了MVC的精確表示,並且非常簡單。爲了與我的數據庫進行通信,我使用了域對象和數據映射器。模型,視圖和控制器在PHP MVC實現中的映射
問題:
- 是否真的需要有一個1:1:模型,視圖和控制器之間的一對一映射?
例子:對於一個博客系統,顯示博客條目頁面時,我會創建一個名爲DisplayEntryController控制器,以及一個名爲DisplayEntryView查看。該視圖將從BlogMapper類(與數據庫通信以檢索當前的博客條目)和CommentMapper類(與數據庫進行通信以檢索當前博客條目的評論)中獲取其信息。考慮到該視圖適用於2個模型對象,這是否是一種好的做法?如果不是什麼替代方案?如果是的話,怎樣才能以通用的方式實施?
- 多個控制器可以處理一個頁面嗎?對於上面的例子,是否可以通過DisplayEntryController和CommentController處理顯示博客條目的頁面的相關部分?如果是的話,2個控制器將如何協調?
在此先感謝您。例子將不勝感激。
我在網上看到的大多數PHP MVC實現都使用頁面方法來組織他們的MVC。例如。對於主頁,您有一個視圖,一個控制器和一個模型。在MVC中進行1:1:1映射的路由很簡單,因爲您可以強制執行MVC組件的位置和命名,並且當主頁出現請求時它會自動查找以下類:HomeView HomeController和HomeModel。
這在大型項目中顯然不起作用。如何處理路由以支持路由到多個模型(DataMapper),多個視圖,而不會創建過度複雜的路由器或添加複雜的依賴關係注入層?
示例:如上所述,顯示博客條目時,顯示 博客條目代碼和評論部分。爲了達到這個目的,它 與兩個DataMapper進行通信,這兩個DataMapper獲取博客條目, 和返回博客評論的那個。如何分配視圖 與這兩個數據加載器一起使用以從 獲取數據庫中的數據?
不,MVC部件之間有1:1:1映射實際上是錯誤的,因爲這些「部件」甚至不在相同的「權重組」中。模型是一個圖層,而控制器和視圖是類。多個控制器*可以從同一頁面到達,但我不知道「座標」是什麼意思。 –
在MVC中進行1:1:1映射的路由非常簡單,因爲您可以強制執行MVC組件的位置和命名,並且當主頁出現請求時,會自動查找以下類:HomeView HomeController和HomeModel。 當視圖與多個模型(DataMapper)通信時,如何處理路由,而不添加複雜的依賴關係注入層? –
示例:如上所述,顯示博客條目時,您將顯示博客條目代碼和評論部分。爲了達到這個目的,它與兩個DataMapper進行通信,這兩個DataMapper獲取博客條目,併爲博客返回評論。如何分配視圖以使用這兩個數據手段從數據庫獲取數據? –