2010-06-26 80 views
1

我正在考慮重新工作我的MVC之前,我得到了很遠的一起。目前它使用一個用戶輸入並確定模型的sinle控制器。該模型具有maby不同的方法,我稱之爲動作,因爲它會自動調用。該模型加載其視圖文件,該文件再次包含許多不同的方法。該模型可以設置可以在視圖中使用的屬性。然後控制器調用分析輸出顯示的模板類。我能做些什麼來改善我的MVC?

這是bst的方式嗎?

或者應該每個不同的部分(新聞,聯繫,約)都有自己的控制器,它加載了一個特定的模型和視圖。本質上,它不是將方法分組到單個文件中,而是使用multipe文件。

我有點失落,我該怎麼做。

乾杯

+0

您可能想看看HMVC(分層MVC)並開始實施。 http://www.javaworld.com/javaworld/jw-07-2000/jw-0721-hmvc_p.html http://www.thecentric.com/wiki/index.php/HMVC_Tutorial – Andreas 2010-06-26 11:36:56

回答

2

開始使用MVC的作品,並是著名像Symfony的或蛋糕。由此你會決定:

  • 你自己做什麼,知道最佳實踐;
  • 如果您覺得自己可以通過使用這些方法節省時間,就可以放棄自己的生活。
+0

好的建議。我花了一點看蛋糕,但不多。我會試着用它做點什麼,看看它是如何工作的。我想編寫自己的代碼,我已經閱讀了許多文章,說它很好地代碼yiur自己,主要是作爲一種學習體驗。 – 2010-06-26 11:33:18

+0

在正常的項目中,MVC框架低於所有代碼的5%,建立和適應項目規範的MVC總是更好。大型開源MVC項目具有普遍性,速度緩慢。但要了解MVC如何工作並獲得一些好的體驗,嘗試一些着名的MVC FW是很好的。 – codez 2010-06-26 11:40:09

+0

我同意,我讀過的大部分內容都表示,大型MVC項目試圖將其全部納入其中。我打算讓我的MVC成爲最低限度的,所以,如你所說,我可以將它用於項目。適應每個項目。 – 2010-06-26 14:09:26

0

構建FrontController,它解析請求uri並決定要加載哪個控制器以及要運行哪種方法。隨着的.htaccess重寫所有的請求到index.php

//index.php 
class FrontController{ 
    function run(){ 
    //parse request uri here /comment/new 
    //load controller comment 
    //run controllers method new and pass some request attributes 
    } 
} 

// ../controllers/comment.php 
class Controller_Comment extends Controller{ 
    function new($request){ 
    //do stuff here 
    } 
} 
1

模型加載其視圖文件

控制器應充當模型和視圖之間的調停。

模型不應該意識到視圖呈現的方式,視圖也不應該知道模型的任何種類的邏輯。理論上,如果您的MVC結構良好,您應該能夠使用不同類型的視圖(例如HTML,XML和JSON)來表示相同的模型。

2

如果您正在考慮推進您自己的MVC模型,就像@ e-satis所說的那樣,您將需要體驗已經開發的系統中正在發生的事情。但是,根據我在設計MVC模型和確定開源社區中有什麼的經驗,我堅持回到自己的MVC有兩個很好的理由。一個原因是定製的靈活性,另一個原因是自己的MVC隱私。

我對MVC設計模式使用了以下方法。

標識用戶請求URL的Router.php文件。此路由器將能夠獲取控制器幷包含該文件並調用控制器默認方法。

如果需要,加載的控制器也可以加載其他控制器。這是使用全局方法完成的,其中所有控制器類將擴展到可以調用其他控制器的MainController類。

我確實使用全局註冊表來設置變量,並從一個控制器獲取變量。

模型用於從表中獲取數據,並且我的大多數模型將表示包含CRUD(創建讀取更新刪除)的數據庫函數。以便控制器可以使用模型輕鬆操作數據庫表數據。

如果您希望系統能夠更智能地識別知道文件名所需的操作,則所有控制器,模型和視圖中的命名約定也很重要。

我對每種控制器分別使用視圖。這些視圖將被髮送到主模板視圖文件。 與模型相同,控制器將能夠將視圖設置爲主視圖。

還有其他的自定義,你可以做,比如在調用類之前或調用類/控制器/模型/視圖等之後應用安全方法。 這是由MainController完成的,它將始終查看具有自動加載類的文件夾,指定在構建內容和交付輸出的過程中,在執行不同操作之前和之後應加載哪些文件。

MVC不是一個小規模的想法,但它是一個始終可以開發的設計理念。有很多PHP MVC開源框架可以找到,如果你知道如何搜索像google.com的主要搜索引擎

但我建議你,如果你只是開發一個小的MVC不是一個好的解決方案動態網站,因爲與開發小型網站相比,它將耗費更多時間進行開發。 MVC是理想的,如果你有業務邏輯並且需要系統自動化以避免大多數例程開發任務,並且我會說MVC對大型應用程序來說是最理想的。

+0

謝謝,這真是很好的建議。在過去的幾天裏,我一直在爲我的MVC重新編碼,說實話,它的構建很像你的系統是如何構建的。至少,聽起來是這樣。我理解使用MVC的概念,因爲我已經有很多計劃。我從來沒有真正理解我應該如何去做,因爲大多數教程對我來說似乎有點模糊。 – 2010-06-29 14:39:41

相關問題