目前,我正在重組現有的代碼庫。我是新來的PHP框架,但我一般知道MVC的工作原理。關於MVC的快速問題在PHP
現在,有一個控制器文件,一個模型文件和三十個視圖文件。
每個模型應該對應一個表嗎?
應該每個視圖對應一個html頁面嗎?
控制器怎麼樣?我怎樣才能將這一千行怪物分解爲更多有組織的代碼。
謝謝。
目前,我正在重組現有的代碼庫。我是新來的PHP框架,但我一般知道MVC的工作原理。關於MVC的快速問題在PHP
現在,有一個控制器文件,一個模型文件和三十個視圖文件。
每個模型應該對應一個表嗎?
應該每個視圖對應一個html頁面嗎?
控制器怎麼樣?我怎樣才能將這一千行怪物分解爲更多有組織的代碼。
謝謝。
如果每個模型對應一個表?
號公報模型通常從來自多個源的數據構成。不要認爲將它綁定到物理數據庫結構,儘管可能最終會有很多相似之處。
如果每個視圖對應一個HTML頁面?
不是聽起來陳腐,而是每個視圖都應該對應一個視圖。我不確定你的意思是什麼「頁面」。
也許一個例子會很有用。想象一下用戶註冊頁面。該模型是用戶,可能包含的字段,如:
,該數據可以是在多個表中。例如:派對,人物,聯繫人和地址。
有可能會是幾個觀點:
通常,所有這些將由單個控制器處理,因爲所有過程都是相互關聯的。
每一個模型都應該對應於一個邏輯數據對象 - 這應該通常主要被存儲在一個表(具有外鍵入其他表經常,由於模型一般需要引用其他型號)。
每個視圖應該對應於查看數據的邏輯方法(例如,在計算器,有希望的徽章頁面,標籤頁等列表視圖列表視圖)。
每個控制器應該對應一個邏輯分組的視圖,它不應該太大(其中太大是文件變得無法管理的行 - 如果您有30個視圖,您可以希望找到將他們分組爲3個控制器的合乎邏輯的方式)。
怎麼樣的控制?我怎樣才能將這個千行怪物分解成 更有組織的代碼。
看看CakePHP框架以及它如何解決大型模型,控制器和衆多視圖的問題。我覺得它很優雅。複雜模型可以有行爲。大型控制器可以分成組件。和許多意見與佈局分組,而具有分離成元件共同位。聽起來可能聽起來很複雜和可怕,但一旦你嘗試使用它,它確實會落到實處。
是否每個模型都對應一個 表?
它並不一定,但它往往會取決於您的業務邏輯的複雜性。
既然你重構現有的應用程序,想想模型是如何使用的其他層。在MVC中,模型位於依賴堆棧的底部。
視圖如何訪問模型?控制器如何修改它?該模型將如何填充?
應該每個視圖對應一個 html頁面嗎?
再次,它沒有到,但它往往會。
怎麼樣的控制?我怎樣才能將這個千行怪物分解成 更有組織的代碼。
通常的策略是使用前端控制器模式。前端控制器處理HTTP請求,應用程序初始化和站點範圍的邏輯(就像你的千線怪物目前正在做的那樣) - 但是隨後它委託給更專業的控制器。
這些專門的控制器可以按照它使用的模型,站點頁面結構或任何其他看起來合乎邏輯的東西進行分組。然後他們與模型交互並選擇一個視圖來顯示。
最後,對Leonid建議的框架+1。即使你最終沒有使用控制器模式,也有一些很好的控制器模式實現。
希望有所幫助。
那麼千線控制器是可以預期的嗎? – Dirk 2009-11-04 06:54:03
如果你需要1000行控制器來註冊用戶,那麼你做錯了什麼。 – cletus 2009-11-04 07:21:43