正确理解PHP开发MVC模型

开发 后端
希望大家能够通过本文介绍的PHP开发MVC模型的相关方法能够充分掌握这一方法的应用。提高我们对PHP语言的认知程度。

PHP开发MVC模型对于初学者来说还是不太了解其中的含义。我们在文章中详细讲述了PHP开发MVC模型的具体方法,希望对大家有所帮助。#t#

使用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模型的一个大概结果。不是完整代码,完整代码请见demo包。

< ?   
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=''){} //详细显示一条记录    }    ?>  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

在这个模型里面,我是使用数组和数据库的字段来对应的。早期的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);    ?>  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.

这段PHP开发MVC模型代码主要是把MYSQL注册到注册器里面,关于注册器的使用的原理,可以看我翻译的两篇文章。
然后新建一个mysqlController.class.php文件,代码如下:

 

< ?   
/**   
* MVC演示demo   
* 仅仅实现最基本的MVC功能,不包含安全处理
,数据过滤,及其他优化措施。   
* @author:feifengxlq    * @since:2007-1-24    * @copyright http://www.phpobject.net/blog/    */    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());//这样实现了读取数据    }    }    ?>  
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.

上面首先是控制器的构造函数里面,加入一个模型。然后在indexAction里面调用模型的方法来显示数据。这样就实现了最简单的查询列表。

以后我会写一个具体的demo来说明如何使用PHP开发MVC模型的其他方法,比如说查询、更新、增加、分页列表、多表连查等等。

责任编辑:曹凯 来源: 百度博客
相关推荐

2009-12-03 18:07:47

PHP转义

2009-12-09 14:04:45

PHP include

2009-12-07 14:53:13

PHP抽象类应用

2009-12-04 17:16:41

PHP析构函数

2009-06-18 10:29:24

Hibernate I

2009-12-14 17:48:46

Ruby String

2020-01-07 15:10:32

Linuxinode命令

2010-02-01 10:54:37

C++框架

2010-07-20 12:35:33

SQL Server索

2009-12-03 15:31:30

PHP获取显示数据库数

2024-01-29 00:35:00

Go并发开发

2023-12-27 19:52:08

Go模块命令

2009-04-20 09:09:46

PHP错误信息错误代码

2010-02-04 15:05:00

C++ cpuid指令

2010-01-18 17:29:35

VB.NET函数调用

2009-12-16 17:00:43

Ruby on Rai

2009-12-17 11:36:55

Ruby输入输出

2009-12-16 10:33:31

Ruby更新文件

2013-08-06 10:40:38

大数据数据

2010-08-05 15:40:07

DB2快照函数
点赞
收藏

51CTO技术栈公众号