麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

MVC真的適合PHP嗎?

2024-09-04 11:50:14
字體:
來源:轉載
供稿:網友
 

近來設計模式風行,MVC隨處可見,PHP領域也不例外,很多論壇都開始討論在PHP中使用MVC。然而,M、V、C在PHP中到底該如何實現?MVC真的適合PHP么?這里Easy給出一些自己的思考。

MVC的原型

MVC本來是存在于Desktop程序中的,M是指數據模型,V是指用戶界面,C則是控制器。使用MVC的目的是將M和V的實現代碼分離,從而使同一個程序可以使用不同的表現形式。比如一批統計數據你可以分別用柱狀圖、餅圖來表示。C存在的目的則是確保M和V的同步,一旦M改變,V應該同步更新。

JAVA中的MVC

JAVA把MVC引入了Web領域,并在此基礎上架構出了一套稱為Model2的體系。由于Web的特殊性,JAVA中的MVC和Desktop中的MVC并不完全一致。主要原因是Web中的V不是持續的,用戶每訪問一次,V就要重新生成一次,所以V始終是和M一致的,不需要C來控制同步。那么 JAVA中的C在干什么?JAVA中的C通常用于流程的轉向,其實用的是Dispatch模式,不再是Desktop中的C了。

PHP中的MVC

要在PHP中原封不動的COPY JAVA的MVC是不可能的。問題主要表現在M上,在JAVA中,M是獨立于業務邏輯和表現邏輯的數據模型,在服務器端跨頁面存在,JAVA Bean扮演的就是這個腳色。而PHP進程并不長時間駐留于內存,只在PHP頁面開始執行時創建,在頁面解釋執行結束時就已經結束。在這樣的情況下,我們根本無法直接實現M。所以所有聲稱實現了MVC模式的PHP程式都只能通過模擬手段來實現M。實現的方式一般是在當前頁面結束前把數據存入數據庫或者 cookie/session,在下一個頁面中再透過數據庫或者cookie/session重建M。這樣的方式和JAVA中的Bean比起來可以說是開銷巨大,本來往內存中寫數據的簡單操作現在要從服務器端傳到客戶端或者數據庫,然后再傳回來。與其用這么大的開銷來維護一個數據模型再在最后把這個模型塞回數據庫,還不如直接根據需要更新數據庫里邊的數據。

現在PHP中的MVC架構可以用下圖來表示。

然后我們再來看V。現在很多PHP程序簡單的使用了一些模板技術就在說明中寫“采用MVC架構”。其實絕大多數的PHP模板程序都只是分離HTML 和PHP的,而非MVC強調的顯示邏輯和業務邏輯分離。一個混用HTML和PHP的頁面一樣可以是MVC的一部份。如何分離顯示邏輯和業務邏輯至今沒有一個滿意的方案。我個人則比較認同http://www.phpe.net/articles/384.shtml的實現方案。至于C,和JAVA中差不多,還是被用作轉向,這個在PHP中其實并不重要。


一個極耗資源的M + 一個區別不大的V + 可有可無的C 構成了PHP中所謂的MVC。

基于以上分析,Easy認為,PHP原有的3層構架比所謂的MVC更為高效,而3層構架中的表現層要解決的問題MVC中的V也同樣存在。一個改進后的3層架構比MVC更適用于PHP。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91久久久久久 | 欧美日韩国产一区二区三区在线观看 | 一区国产在线 | 国产亚洲精品久久久久久久久久 | 做爰xxxⅹ性护士hd在线 | 日韩在线欧美在线 | 美女黄网站免费观看 | 色悠悠久久久久 | 少妇一级淫片高潮流水电影 | 久久国产精品小视频 | 18欧美性xxxx极品hd | 久久精品无码一区二区三区 | 日韩精品久久久久久久电影99爱 | 国产精品麻豆91 | 久久久婷婷一区二区三区不卡 | 成年人小视频在线观看 | 日韩字幕在线观看 | 一级黄色在线观看 | 真人一级毛片免费 | 国产成人自拍小视频 | 久久国产成人午夜av浪潮 | 欧美激情在线播放 | 19禁国产精品福利视频 | 日韩黄色精品视频 | 成人免费网站在线观看视频 | 草莓福利社区在线 | 调教小男生抽打尿孔嗯啊视频 | 国产91精品亚洲精品日韩已满 | 曰批全过程120分钟免费69 | av在线播放免费观看 | 亚洲精品无码不卡在线播放he | 91久久国产综合久久91精品网站 | 国产精品亚洲精品久久 | 国产成人精品免费视频大全最热 | 久久99精品久久久久久园产越南 | 最新91在线视频 | 91精品观看91久久久久久国产 | 久久久久久久久久久亚洲 | 精品一区二区三区不卡 | 高清国产午夜精品久久久久久 | 日韩精品久久久久久 |