2012-08-01 79 views
3

在閱讀了Stack上一些公平的帖子之後,還有一些材料在線推薦給我,MVC模式很容易解釋,所以請不要用另一種解釋來回答。謝謝!PHP MVC - 從模型或控制器調用視圖函數?

我現在正在設計我自己的PHP MVC,並有兩種可能的方式來推進視圖。

但是,首先,我的控制器目前很愚蠢,不包含任何類,只需從合適的模型中調用公共方法,並渲染適當的視圖。

必要時包含視圖,所以很自然地,對象可以通過構造函數以及所有方法(包括刪除/更新等)使用。

我的第一選擇是讓視圖

foreach($object->fetchData() as $data) 

然後通過循環的結果用這樣的數據。但是有些人不同意這一點,並且認爲應該排除這種方法。相反,它已建議我給你這個在構造函數中的變量,然後在

//constructor 
$fetched_data = $object->fetchData() 

// view 
foreach($featched_data as $data) 

我不喜歡這種非常多,因爲它接縫混亂和不必要的視圖中使用這個變量。

隨着我所有的關鍵方法都被提供給視圖,這可能被認爲是一個問題嗎?

所以這裏的問題。我是否保持原樣,並在MODEL中創建用於呈現數據的新方法(如上所述),或者我可以在構造函數中創建一個類,將模型擴展到該類中,保護模型中的關鍵函數,然後創建我的只讀CONSTRCUTOR中的公共方法?

謝謝!

+1

投票遷移到[http://programmers.stackexchange.com/](http://programmers.stackexchange.com/),因爲它是關於軟件設計概念,而不是解決特定的編碼問題。 – 2012-08-02 12:50:33

回答

0

我會在構造函數中創建一個類。不僅可以擴展模型是一種更安全的方法,還可以最大限度地減少視圖中函數的調用。假設你有幾個視圖,訪問構造函數數據比每次在每個視圖中調用方法函數要容易得多。

您可以向您的控制器添加類,這些類將調用方法函數並將數據直接傳遞到視圖中,而不是聚集構造函數或引導程序。