日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
正確理解PHP開發(fā)MVC模型

PHP開發(fā)MVC模型對于初學(xué)者來說還是不太了解其中的含義。我們在文章中詳細(xì)講述了PHP開發(fā)MVC模型的具體方法,希望對大家有所幫助。#t#

創(chuàng)新互聯(lián)專注于安陽縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供安陽縣營銷型網(wǎng)站建設(shè),安陽縣網(wǎng)站制作、安陽縣網(wǎng)頁設(shè)計、安陽縣網(wǎng)站官網(wǎng)定制、小程序設(shè)計服務(wù),打造安陽縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供安陽縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

使用MVC讓程序多了很多數(shù)據(jù)庫操作,使得性能下降,這著實讓我吃了一驚。MVC只是一種框架,與數(shù)據(jù)庫操作沒有任何關(guān)系。MVC只是提供一種清晰的編程開發(fā)模式,只要你處理的好,是不可能多處很多無謂的數(shù)據(jù)庫操作的。如果一個MVC讓一個程序員在不知情的情況下多出了很多數(shù)據(jù)庫操作就絕對不是一個很好的MVC架構(gòu)。我覺得MVC只要提供一個簡單的開發(fā)框架就行了,沒有必要集成很多庫類,庫類***能讓程序員自己選擇去使用。

我沒有深入研究過MVC的理論,對我個人來說,模型就是一個數(shù)據(jù)庫的封裝,調(diào)用模型的方法,你可以得到相應(yīng)的數(shù)據(jù),但實現(xiàn)的細(xì)節(jié)程序員不需要關(guān)心。在實際開發(fā)中,很可能一個數(shù)據(jù)庫的表就對應(yīng)一個模型。

比如說一個用戶信息表userinfo,對應(yīng)就有一個模型user,通過調(diào)用模型user的add()方法你就可以向數(shù)據(jù)庫添加一條數(shù)據(jù),通過select()你就可以實現(xiàn)查詢,通過update就能實現(xiàn)更新。同時模型應(yīng)該是和具體的數(shù)據(jù)庫類型無關(guān)的,無論你使用的mysql,oracle還是sql server。

同時我不推薦在WEB開發(fā)中使用ROR,復(fù)雜的多表查詢使用SQL語言是多么方便和快捷的事情,而且性能更好。如果一個程序員連SQL的知識都沒有,我不認(rèn)為他是一個合格的程序員。所以,我在我的模型里面,提供了一個query的方法來實現(xiàn)直接的SQL查詢。

下面是PHP開發(fā)MVC模型的一個大概結(jié)果。不是完整代碼,完整代碼請見demo包。

 
 
 
  1. < ? 
  2. class module{ 
  3. var $mysql;//數(shù)據(jù)庫操作類,
    可以是mysql,oracle,sql等等 
  4. var $tbname;//模型對應(yīng)的表名稱 
  5. var $debug=false;//是否是調(diào)試模式 
  6. function module($tbname,$db=''){}
    //構(gòu)造函數(shù) 
  7. function _setDebug($debug=true){}
  8. //開啟或者關(guān)閉調(diào)試模式 
  9. function add($row,$tbname=''){}
  10. //新增加一條記錄 
  11. function query($strsql){}//直接查詢sql語句 
  12. function count($where='',$tbname=''){ }
  13. //計數(shù)統(tǒng)計 
  14. function select($where='',$tbname=''){}
  15. //查詢 
  16. function delete($where='',$tbname=''){}
  17. //刪除滿足條件的一個記錄 
  18. function update($set,$where,$tbname=''){}
  19. //更新指定記錄 
  20. function detail($where,$tbname=''){}
  21. //詳細(xì)顯示一條記錄 
  22. ?> 

在這個模型里面,我是使用數(shù)組和數(shù)據(jù)庫的字段來對應(yīng)的。早期的PHPBEAN里面使用了對象來對應(yīng)。但后來感覺這種PHP開發(fā)MVC模型的方法在PHP中不好,而且增加了很多無謂的類。使用數(shù)組更加方便,效果更好(PHP中的數(shù)組的確是個好東西,相對JAVA來說好太多了)。

在下面的demo中,我使用了mysql數(shù)據(jù)庫來演示,其中數(shù)據(jù)庫操作類改自我原來的一個庫類。

下面,詳細(xì)講解使用demo。^_^
在原來的的包的index.php里面增加

 
 
 
  1. < ? 
  2. require_once(SITE_PATH.'/
    libs/phpbean.class.php'); 
  3. require_once(SITE_PATH.'/
    libs/mysql.class.php'); 
  4. $phpbean=new phpbean(); 
  5. global $phpbean; 
  6. $mysql=new mysql("localhost"
    ,"****","****","52site"); 
  7. $phpbean->register('db',$mysql); 
  8. unset($mysql); 
  9. ?> 

這段PHP開發(fā)MVC模型代碼主要是把MYSQL注冊到注冊器里面,關(guān)于注冊器的使用的原理,可以看我翻譯的兩篇文章。
然后新建一個mysqlController.class.php文件,代碼如下:

 
 
 
  1. < ? 
  2. /** 
  3. * MVC演示demo 
  4. * 僅僅實現(xiàn)最基本的MVC功能,不包含安全處理
    ,數(shù)據(jù)過濾,及其他優(yōu)化措施。 
  5. * @author:feifengxlq 
  6. * @since:2007-1-24 
  7. * @copyright http://www.phpobject.net/blog/ 
  8. */ 
  9. class mysqlController 
  10. var $module; 
  11. function mysqlController(){ 
  12. require_once(SITE_PATH.'/libs/module.class.php'); 
  13. $this->module=new module('52site_siteinfo');
    //52site_siteinfo為表名稱 
  14. $this->module->query("set names 'gb2312'");
    //如果是MYSQL5請加上這句 
  15. function indexAction(){ 
  16. print_r($this->module->select());//這樣實現(xiàn)了讀取數(shù)據(jù) 
  17. ?> 

上面首先是控制器的構(gòu)造函數(shù)里面,加入一個模型。然后在indexAction里面調(diào)用模型的方法來顯示數(shù)據(jù)。這樣就實現(xiàn)了最簡單的查詢列表。

以后我會寫一個具體的demo來說明如何使用PHP開發(fā)MVC模型的其他方法,比如說查詢、更新、增加、分頁列表、多表連查等等。


網(wǎng)頁題目:正確理解PHP開發(fā)MVC模型
URL鏈接:http://m.5511xx.com/article/ccdgpei.html