程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 淺析PHP程序設計中的MVC編程思想,mvc編程思想

淺析PHP程序設計中的MVC編程思想,mvc編程思想

編輯:關於PHP編程

淺析PHP程序設計中的MVC編程思想,mvc編程思想


PHP的MVC編程思想目前已經被廣泛使用於各種大型項目的開發,很多成熟的MVC框架也逐漸被大家所熟知並被廣泛應用於各類項目中,比較常見的如ThinkPHP、codeigniter、Symfony、yii、cakePHP等等。本文就來簡述一下php的MVC程序設計思想。

一、什麼是MVC

簡單的說就是將網站源碼分類、分層。
MVC三個字母的含義:
M:Model 模型,負責數據庫操作。
V:View 視圖,負責調用Model調取數據,再調用模板,展示出最終效果。
C:Controller 控制器,程序的入口,決定改調用哪個View,並告訴View該做什麼。
如此說來,程序的執行順序是C-V-M 或 C-M ,和MVC的名字正好相反。

二、為什麼要MVC

1.能使網站程序物理結構更合理。

當用PHP建設一個網站的時候,最笨的方法,你可能把每個頁面建成一個PHP文件。如果你的網站只有index.php,menu.php.article.php 三個頁面,那你可以不用MVC,但我們做一般的網站的時候,動辄幾十個頁面,把所有頁面放在根目錄顯然不是我們所能接受的,於是你需要一個合理的思想去將你的代碼分類,按功能把他們分成不同的目錄,且由程序智能的載入調用,這就是MVC要幫助你做的。

2.使代碼更容易維護。

我們再來看單個頁面,最笨的方法,就是PHP代碼與HTML代碼混合,這顯然不夠好,你在維護網站的時候不得不區分哪裡是PHP,哪裡是HTML,這對於一個程序員來說,簡直是災難。於是很多人就使用Smarty,這樣就可以將“數據處理”與“頁面展示”分開來,這樣做的確不錯,也有很多人正在這麼做,但這還不是MVC,MVC要做的就是將“數據處理”再分為“邏輯處理”與“數據庫操作”,這就是所說的分層。
這樣當你的程序錯誤或想要修改的時候,就變得很輕松了,當頁面顯示錯誤的時候,你就去檢查V或模板文件;當邏輯有問題的時候,你就去檢查C和V;當你數據庫操作錯誤就去檢查M。
其實MVC一般要把PHP的一個頁面分割為4個頁面,分別是C,V,M,模板。各司其職,方便管理。

3.有利於代碼復用。

MVC會把一般會把一個大的功能放在一個目錄下,也就是由一個C去管理。
例如要做一個含有會員系統的網站,我們就可以把會員相關的代碼都放到user目錄裡,由User_Controller統一管理,當我們另一個網站也需要會員系統的時候,我們就可以直接把這個目錄復制過去,修改一下接口就可以了。

三、PHP實現MVC的思路

我們需要三個基類:Controller、View、Model ,然後不同的C、V、M分別繼承他們就有對應的屬性與方法了,如果這裡你不理解,可以去看看面向對象的書。

這裡給大家提供一種MVC基類的設計思路,僅供參考:

1. Controller類的設計

一個main()方法,供程序調用,主要是通過get和post變量決定該如何處理。
一個getModel($model)方法,在需要調用數據庫的時候,調用對應目錄的M。
一個display($view)方法,在main()方法中調用,載入對應的V,並掉應V的main()方法;

2.View類的設計與Controller很相似

一個main()方法,當C載入V的時候調用這個方法,使程序能繼續執行下去。
一個getModel($model)方法,在需要調用數據庫的時候,調用對應目錄的M。
一個display($template),調用對應的模板文件,並把數據傳遞給模板。

3.Model類的設計

可以定義一些屬性,例如要操作那些表,操作那些字段等。
一個getDB()方法,獲得一個數據庫類的實例,(數據庫類一般都是用單件模式設計的)
一個load()方法,載入一個數據。
一個add()方法,可以根據定義好的屬性自動構造SQL語句,並執行插入操作。
一個eidt()方法,同上,但執行修改操作。
一個del()方法,同上,但執行刪除操作。
為了能使新手更好的理解我這個思路的工作原理,我們現在模擬一個用戶登錄的場景,看看MVC是如何工作的。
現在假設,所有的數據都提交給index.php,

第一步:
我們提交各get變量,告訴index.php該用哪個C,例如可以這樣index.php?controller=user
然後index接收到get變量,什麼也不需要做,直接找到/user/controller.php,把所有數據丟給他,本來GET和POST就是全局的,所以index.php也不需要做什麼,直接調用C的main函數就可以了,到此index.php的任務完成。

第二步:
C的main函數開始執行,檢查變量,發現用戶要執行的登錄操作(很簡單,你post個變量do=login就可以了),於是調用getModel,載入對應的M類(例如/user/models/model.php),並實例化, 調用實例的load方法,載入該用戶的數據資料,判斷是否與用戶提交的密碼一致,如果提交的數據不正確header跳轉到出錯頁面,如果正確,調用display()方法,載入對應的V(例如/user/views/details.php),並實例化,調用其main()函數,進入第三步。到此C的任務已完成,第二不操作均在main函數中進行。

第三步:
你可以選擇調用getModel()載入M,重寫調取數據,也可以在C實例化V的時候,把參數傳過來(例如SESSION),當V已經確定得到數據以後,display(),載入模板,MVC執行完畢。
當然,由於字數與精力限制,這裡寫的只是非常簡要的概括,實際實施的時候要考慮很多細節,但我設計MVC的時候,大概思路就是這樣,也用到了實際中,感覺良好。


php有什重要的網站編程思想?

首先,你要弄清MVC干嗎用的,MVC的作用在於合作開發,比如你有一個開發團隊。你是總監,你需要用一個的架構去讓你的團員之間相互協作,並行開發。而當你是獨自作戰的時候,MVC這樣的框架真的沒必要用。反而,過度依賴MVC最後做出形而上學的東西來,效率反而不高。
社交網站哦,mvc解決不了你多大的問題,哪怕你不用面向對象,全部頁面都用過程存儲,效率反而更高。
同樣面向對象也是一樣的道理,當你你需要多個實例的時候,你就弄個類,方便操作,當你只需要為一個對象的時候,那面向對象的反而沒啥意義了。
不要在開發之初就去想這寫框架啦,mvc什麼的,用最直接的方式,最快的做出第一個版本,然後在需求至上進行改進,這才是最合適的方法。
 

助php mvc模式

mvc只是一種編程思想,是不分語言的

php開發中有很多項目都用到了mvc,這種模式適合大型項目的開發

MVC是三個單詞的縮寫,分別為: 模型(Model),視圖(View)和控制Controller)。 MVC模式的目的就是實現Web系統的職能分工。 Model層實現系統中的業務邏輯,通常可以用JavaBean或EJB來實現。 View層用於與用戶的交互,通常用JSP來實現。 Controller層是Model與View之間溝通的橋梁,它可以分派用戶的請求並選擇恰當的視圖以用於顯示,同時它也可以解釋用戶的輸入並將它們映射為模型層可執行的操作
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved