2012-08-09 49 views
2

我是過去2年的平板PHP程序員。現在我想移動到MVC架構,所以我使用的是codeigniter,看起來很簡單。我想知道一些最佳做法,因爲我正在開發codeigniterMVC ::哪去哪兒?

我有一個名爲controllerbuilding,一個名爲building_datamodel和視圖稱爲building_view。現在我想通過檢查很多條件來顯示建築物列表。我做平板PHP

  1. 以下從數據庫
  2. 分割的結果我們會根據一定的標準A,B,C
  3. 顯示結果建築物的名單中section - Asection -Bsection-c作爲輸出爲HTML

現在MVC我做了以下

  1. 獲取建築名單在數據庫上building_data(模型)從building_data
  2. 將結果存儲在一個$data陣列building控制器
  3. 根據標準A,B,C在building_view中分割結果並輸出HTML(我可以對數據進行基於條件的分類(無需使用) g mysql查詢)? !My actual question

我在這裏做正確的事情,沒有違反MVC架構規則?

+0

你做得對!避免使用大量的PHP代碼,避免在控制器中有太多的數據庫查詢。 – WatsMyName 2012-08-09 04:23:18

+0

_condition based classification_是什麼意思?那些標準是什麼? – 2012-08-09 04:34:23

+0

@BhuvanRikka Criteria就像建築物被列入黑名單,是分配給任何人的建築物,建築物何時添加,是否在另一個表格中列出建築物等。實際上,我無法在一個查詢中獲得所有這些信息。可能有5或6個查詢正在運行以生成此頁面。我必須根據這5個查詢結果對數據進行分類。 – Deepak 2012-08-09 04:53:00

回答

7

MVC是一種設計模式。不是架構。

但是,如果您想要學習最佳實踐或MVC,那麼CodeIgniter是錯誤的選擇。它充滿了糟糕和過時的做法(PHP4代碼片段,全局狀態和許多其他問題),並且沒有實現任何甚至接近MVC模式的東西。它更像是一個PHP的糟糕的Rails克隆。

視圖應該是對象,而不是愚蠢的模板。您的控制器應該告訴模型圖層用戶選擇了哪個建築物,然後查看獲取當前建築物的詳細信息,並決定如何表示所有建築物。

在適當的MVC實現中,視圖是包含表示邏輯的實例。他們從模型層獲取信息,然後選擇使用哪些模板來呈現響應,或者即使HTML響應是必要的。也許用戶實際上以JSON或XML格式請求數據。或者,也許該視圖需要發送的唯一響應是HTTP標頭。你也應該知道,你不能在Web應用程序中實現經典的MVC模式(或者至少它是非常困難的,並且需要使用套接字和持久化模型)。相反,我們使用MVC模式。它們之間的主要區別在於View如何獲取來自Model層的信息。

  • 在MVP和MVVM模式中,視圖是被動的,並通過類似控制器的結構(透視圖,主持人或視圖模型)接收數據。
  • Model2 MVC和HMVC模式視圖處於活動狀態,它直接從模型層請求信息。

還有第三組:類似Rails的實現。它用基於ActiveRecord的ORM集合來替換模型層,假設視圖是模板,「控制器」是演示者和視圖職責的組合。

+0

在閱讀標題後,我來到這裏期待最糟糕的答案;我很驚喜:} – orourkek 2012-08-10 16:19:00