關於MVC模式,視圖層應該是'返回'HTML數據的函數,或者視圖層實際上是HTML數據本身?PHP:關於MVC中的視圖層?
回答
查看MVC啓發式Web模式中的類(在Web上實現傳統的MVC非常困難,僅使用PHP就不可能)負責表示邏輯。然後創建對請求的響應並處理多個模板。
信息從模型層到選定視圖的方式很大程度上取決於MVC啓發模式的實現方式。如果您使用的是MVP或MVVM,則信息由控制器提供,並且該視圖是被動的(但視圖是而非啞模板)。如果您要使用Model2 MVC或HMVC模式,則視圖將從模型圖層處於活動狀態。
當此視圖已獲取信息時,它決定與模板合併。或者即使模板是必要的。然後創建響應。
每個View生成的響應可以是HTML,JSON,XML或純文本。或者,如果需要的話,只發送一個HTTP頭(就像做重定向時一樣)。這全是演示邏輯的一部分。
視圖層是返回的HTML數據
模型,控制器和視圖的邊界可以證明這樣的功能:
/* model models/post.php */
<?php
class Post {
public static all() {
return Array(...);
}
}
?>
/* controller /posts/index.php */
<?php
require "../../models/post.php"
$posts = Post.all();
require "../../views/posts/index.php"
?>
/* view /views/posts/index.php */
<?php foreeach ($posts as $post): ?>
<p><?php echo $post['name']; ?></p>
<?php endforeach; ?>
意識形態上很可能只是功能,但通常的做法是像模板引擎中的模板。所以視圖層是html + data insertions
(沒有我們如何得到的邏輯和爲什麼)。例如,意識形態也是功能,但不是框架編程語言的功能。
-1:視圖不是一個愚蠢的模板,模型不是一個類。 – 2012-07-29 17:48:10
這是非常簡單和錯誤的看MVC(它實際上是MVP的相同的錯誤實現,已由Rails傳播)。你的回答堅持認爲,這些觀點沒有邏輯。基本上你的答案與[pckabeer's](http://stackoverflow.com/a/11707811/727208)相同,只是填充了錯誤的代碼。 – 2012-07-30 02:23:19
視圖是「模板」
模式是「數據」
控制器是「連接器」和algorithems地方。
-1:視圖不是模板,模型不是數據,你甚至沒有絲毫的想法控制器應該做什麼。 – 2012-07-29 17:44:08
視圖層受制於您希望在客戶端上以可視形式顯示的內容。在大多數情況下,它是HTML,CSS和Javascript,你也可以使用XML和JSON。
在GENRAL,
控制器詢問模型,以提供數據。
控制器可以根據需要更改此數據。
控制器將數據發送到視圖以在template/html的幫助下顯示。
這是MVP的混蛋,由Rails和其他以原型爲重點的框架推廣。 – 2012-07-29 17:34:59
不,我說的是MVC而不是MVP – 2012-07-29 21:10:59
控制器從模型層請求信息並將其傳遞給視圖實例稱爲「主講者」。 – 2012-07-29 23:00:39
-1,視圖不是圖層。它是由視圖和控制器組成的「表示層」的一部分。另外,因爲當層由功能組成時? – 2012-07-29 23:10:44
謝謝@tereško但我希望你能閱讀這個問題。 – pckabeer 2012-07-30 05:05:55
如果OP的兩個建議答案都是錯誤的,那麼您必須選擇一個答案。 – 2012-07-30 09:35:44