PHP開發MVC框架對於剛接觸php的人來說可能還不能夠理解它的意義,不過沒有關係,今天的這篇文章我將具體和你們說說我對mvc框架的理解以及php開發mvc框架的方法。
使用MVC讓程式多了很多資料庫操作,使得效能下降,這著實讓我吃了一驚。 MVC只是一種框架,與資料庫操作沒有任何關係。 MVC只是提供一個清晰的程式開發模式,只要你處理的好,是不可能多處很多無謂的資料庫操作的。如果一個MVC讓一個程式設計師在不知情的情況下多出了很多資料庫操作就絕對不是一個很好的MVC架構。我覺得MVC只要提供一個簡單的開發框架就行了,沒有必要整合很多庫類,庫類最好能讓程式設計師自己選擇去使用。
我沒有深入研究過MVC的理論,對我個人來說,模型就是一個資料庫的封裝,呼叫模型的方法,你可以得到相應的數據,但實現的細節程式設計師不需要關心。在實際開發中,很可能一個資料庫的表就對應一個模型。
比如說一個使用者資訊表userinfo,對應就有一個模型user,透過呼叫模型user的add()方法你就可以在資料庫中新增一條數據,透過select()你就可以實作查詢,透過update就能實現更新。同時模型應該是和具體的資料庫類型無關的,無論你使用的mysql,oracle還是sql server。
同時我不推薦在WEB開發中使用ROR,複雜的多表查詢使用SQL語言是多麼方便和快捷的事情,而且效能更好。如果一個程式設計師連SQL的知識都沒有,我不認為他是個合格的程式設計師。所以,我在我的模型裡面,提供了一個query的方法來實作直接的SQL查詢。
下面是PHP開發MVC框架的一個大概結果。
< ? class module{ var $mysql;//数据库操作类,可以是mysql,oracle,sql等等 var $tbname;//模型对应的表名称 var $debug=false;//是否是调试模式 function module($tbname,$db=''){}//构造函数 function _setDebug($debug=true){} //开启或者关闭调试模式 function add($row,$tbname=''){} //新增加一条记录 function query($strsql){}//直接查询sql语句 function count($where='',$tbname=''){ } //计数统计 function select($where='',$tbname=''){} //查询 function delete($where='',$tbname=''){} //删除满足条件的一个记录 function update($set,$where,$tbname=''){} //更新指定记录 function detail($where,$tbname=''){} //详细显示一条记录 } ?>
在這個模型裡面,我是使用陣列和資料庫的欄位來對應的。早期的PHPBEAN裡面使用了物件來對應。但後來覺得這種PHP開發MVC模型的方法在PHP不好,而且增加了許多無謂的類別。使用陣列更加方便,效果更好(PHP中的陣列的確是好東西,相對JAVA來說好太多了)。
在下面的demo中,我使用了mysql資料庫來演示,其中資料庫操作類別改自我原來的一個庫類別。
下面,詳細講解使用demo。 ^_^
在原來的包的index.php裡面增加
< ? require_once(SITE_PATH.'/libs/phpbean.class.php'); require_once(SITE_PATH.'/libs/mysql.class.php'); $phpbean=new phpbean(); global $phpbean; $mysql=new mysql("localhost","****","****","52site"); $phpbean->register('db',$mysql); unset($mysql); ?>
這段PHP開發MVC模型代碼主要是把MYSQL註冊到註冊器裡面,關於註冊器的使用的原理,可以看我翻譯的兩篇文章。
接著新建一個mysqlController.class.php文件,程式碼如下:
< ? /** * MVC演示demo * 仅仅实现最基本的MVC功能,不包含安全处理,数据过滤,及其他优化措施。 * @author:feifengxlq * @since:2007-1-24 * @copyright //m.sbmmt.com/ */ class mysqlController { var $module; function mysqlController(){ require_once(SITE_PATH.'/libs/module.class.php'); $this->module=new module('52site_siteinfo');//52site_siteinfo为表名称 $this->module->query("set names 'gb2312'");//如果是MYSQL5请加上这句 } function indexAction(){ print_r($this->module->select());//这样实现了读取数据 } } ?>
上面首先是控制器的建構函式裡面,加入一個模型。然後在indexAction裡面呼叫模型的方法來顯示資料。這樣就實作了最簡單的查詢清單。
相關推薦:
以上是什麼是mvc框架? php開發mvc框架的方法(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!