2009-11-04 106 views
2

目前,我正在重組現有的代碼庫。我是新來的PHP框架,但我一般知道MVC的工作原理。關於MVC的快速問題在PHP

現在,有一個控制器文件,一個模型文件和三十個視圖文件。

每個模型應該對應一個表嗎?

應該每個視圖對應一個html頁面嗎?

控制器怎麼樣?我怎樣才能將這一千行怪物分解爲更多有組織的代碼。

謝謝。

回答

4

如果每個模型對應一個表?

號公報模型通常從來自多個源的數據構成。不要認爲將它綁定到物理數據庫結構,儘管可能最終會有很多相似之處。

如果每個視圖對應一個HTML頁面?

不是聽起來陳腐,而是每個視圖都應該對應一個視圖。我不確定你的意思是什麼「頁面」。

也許一個例子會很有用。想象一下用戶註冊頁面。該模型是用戶,可能包含的字段,如:

  • 標題
  • 賜名
  • 出生日期
  • 用戶名
  • 地址(ES)
  • 電子郵件地址
  • 電話號碼
  • 等現在

,該數據可以是在多個表中。例如:派對,人物,聯繫人和地址。

有可能會是幾個觀點:

  • 關於頁面
  • 窗體頁(用於新註冊,並可能修改細節,以及錯誤);
  • 成功頁面;
  • 失敗頁面。

通常,所有這些將由單個控制器處理,因爲所有過程都是相互關聯的。

+0

那麼千線控制器是可以預期的嗎? – Dirk 2009-11-04 06:54:03

+1

如果你需要1000行控制器來註冊用戶,那麼你做錯了什麼。 – cletus 2009-11-04 07:21:43

0

每一個模型都應該對應於一個邏輯數據對象 - 這應該通常主要被存儲在一個表(具有外鍵入其他表經常,由於模型一般需要引用其他型號)。

每個視圖應該對應於查看數據的邏輯方法(例如,在計算器,有希望的徽章頁面,標籤頁等列表視圖列表視圖)。

每個控制器應該對應一個邏輯分組的視圖,它不應該太大(其中太大是文件變得無法管理的行 - 如果您有30個視圖,您可以希望找到將他們分組爲3個控制器的合乎邏輯的方式)。

0

怎麼樣的控制?我怎樣才能將這個千行怪物分解成 更有組織的代碼。

看看CakePHP框架以及它如何解決大型模型,控制器和衆多視圖的問題。我覺得它很優雅。複雜模型可以有行爲。大型控制器可以分成組件。和許多意見與佈局分組,而具有分離成元件共同位。聽起來可能聽起來很複雜和可怕,但一旦你嘗試使用它,它確實會落到實處。

0

是否每個模型都對應一個 表?

它並不一定,但它往往會取決於您的業務邏輯的複雜性。

既然你重構現有的應用程序,想想模型是如何使用的其他層。在MVC中,模型位於依賴堆棧的底部。

視圖如何訪問模型?控制器如何修改它?該模型將如何填充?

應該每個視圖對應一個 html頁面嗎?

再次,它沒有到,但它往往會。

怎麼樣的控制?我怎樣才能將這個千行怪物分解成 更有組織的代碼。

通常的策略是使用前端控制器模式。前端控制器處理HTTP請求,應用程序初始化和站點範圍的邏輯(就像你的千線怪物目前正在做的那樣) - 但是隨後它委託給更專業的控制器。

這些專門的控制器可以按照它使用的模型,站點頁面結構或任何其他看起來合乎邏輯的東西進行分組。然後他們與模型交互並選擇一個視圖來顯示。

最後,對Leonid建議的框架+1。即使你最終沒有使用控制器模式,也有一些很好的控制器模式實現。

希望有所幫助。