昨天群組裡有人說使用MVC讓程式多了很多資料庫操作,使得效能下降,這著實讓我吃了一驚。 MVC只是一種框架,與資料庫操作沒有任何關係。 MVC只是提供一個清晰的程式開發模式,只要你處理的好,是不可能多處很多無謂的資料庫操作的。如果一個MVC讓一個程式設計師在不知情的情況下多出了很多資料庫操作就絕對不是一個很好的MVC架構。我覺得MVC只要提供一個簡單的開發框架就行了,沒有必要整合很多庫類,庫類最好能讓程式設計師自己選擇去使用。
我自己這個MVC架構的目的只是實現一個簡單的MVC流程,其他的大家具體情況具體添加。做到真正的小巧、靈活、有效率!
前幾週我寫了兩篇文章,《PHP實作MVC發展得最簡單的方法-視圖及模版技術》、《PHP實作MVC發展得最簡單的方法-單點入口》。今天具體說說如何實現MVC的模型。
我沒有深入研究MVC的理論,對我個人來說,模型就是一個資料庫的封裝,調用模型的方法,你可以得到相應的數據,但實現的細節程式設計師不需要關心。在實際開發中,很可能一個資料庫的表就對應一個模型。比如說一個使用者資訊表userinfo,對應就有一個模型user,透過呼叫模型user的add()方法你就可以在資料庫中加入一條數據,透過select()你就可以實作查詢,透過update就能實現更新。同時模型應該是和特定的資料庫類型無關的,無論你使用的mysql,oracle還是sql server。同時我不推薦在WEB開發中使用ROR,複雜的多表查詢使用SQL語言是多麼方便快速的事情,而且效能更好。如果一個程式設計師連SQL的知識都沒有,我不認為他是個合格的程式設計師。所以,我在我的模型裡面,提供了一個query的方法來實作直接的SQL查詢。
下方是模型的一個大概結果。不是完整程式碼,完整程式碼請見demo套件。
複製程式碼 程式碼如下:
var $tbname;//模型對應的表名
var $modbug=falsese///是否為調試模式 $db=''){}//建構子
function _setDebug($debug=true){}//開啟或關閉偵錯模式
function add($row,$tbname=''){/$tb /新增加一筆記錄
function query($strsql){}//直接查詢sql語句
function count($where='',$tbname=''){霠)/計數select($where='',$tbname=''){}//查詢
function delete($where='',$tbname=''){}//刪除符合條件的一個記錄
function update($set,$where,$tbname=''){}//更新指定記錄
function detail($where,$tbname=''){}//詳細顯示一筆記錄 ?>
在這個模型裡面,我是使用陣列和資料庫的欄位來對應的。早期的PHPBEAN裡面使用了物件來對應。但後來覺得這種方法在PHP中不好,而且增加了很多無謂的類別。使用陣列更加方便,效果更好(PHP中的陣列的確是好東西,相對JAVA來說好太多了)。
在下面的demo中,我使用了mysql資料庫來演示,其中資料庫操作類改自我原來的一個庫類,詳細請看《修改下以前的庫類,php5->php4》。
下面,詳細解說使用demo。 ^_^
在原來的的包的index.php裡面增加
require_once(SITE_PATH.'/libs/phpbean.class.php'); libs/mysql.class.php');
$phpbean=new phpbean();
global $phpbean;
$mysql=new mysql("localhost","****","*🎜>$mysql=new mysql("localhost","****","* ***","52site");
$phpbean->register('db',$mysql);
unset($mysql
?>
sql 把代碼主要是把這段程式碼主要是把這段程式碼MYSQL註冊到註冊器裡面,關於註冊器的使用的原理,可以看我翻譯的兩篇文章。
接著新建一個mysqlController.class.php文件,程式碼如下:
/**
* MVC示範demo
* 僅達到最基本的MVC功能,且不含安全處理,且資料過濾,及其他最佳化措施。
* @author:feifengxlq
* @since:2007-1-24
* @copyright class mysqlController > function mysqlController(){
require_once(SITE_PATH.'/libs/module.class.php') ;//52site_siteinfo為表格名稱
$this->module->query("set names 'gb2312'");//如果是MYSQL5請加上這句話
} print_r($this-> module->select());//這樣實現了讀取資料
}
}
?>
?>
然後在indexAction裡面呼叫模型的方法來顯示資料。這樣就實作了最簡單的查詢清單。你可以透過這個地址來查看你的結果http://path/to/yoursite/mv...
以後我會寫一個具體的demo來說明如何使用模型的其他方法,比如說查詢、更新、增加、分頁列表、多表連查等等。
以上就介紹了 PHP實作MVC開發得最簡單的方法-模型,包含了方面的內容,希望對PHP教學有興趣的朋友有所幫助。