找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 562|回复: 1

如何正确理解PHP开发中的MVC模型

[复制链接]

121

主题

-26

回帖

203

牛毛

一级牛人

积分
203
发表于 2012-10-12 14:55:31 | 显示全部楼层 |阅读模式 来自 江西省吉安市
比如说查询、更新、增加、分页列表、多表连查等等以后我会写一个具体的demo来说明如何使用PHP开发MVC模型的其他方法。
希望对大家有所协助。PHP开发MVC模型对于初学者来说还是不太了解其中的含义。文章中详细讲述了PHP开发MVC模型的具体方法。
使得性能下降,使用MVC让程序多了很多数据库操作。这着实让我吃了一惊。MVC只是一种框架,与数据库操作没有任何关系。MVC只是提供一种清晰的编程开发模式,只要你处置的好,不可能多处很多无谓的数据库操作的如果一个MVC让一个程序员在不知情的情况下多出了很多数据库操作就绝对不是一个很好的MVC架构。觉得MVC只要提供一个简单的开发框架就行了没有必要集成很多库类,库类最好能让顺序员自己选择去使用。
对我个人来说,没有深入研究过MVC理论。模型就是一个数据库的封装,调用模型的方法,可以得到相应的数据,但实现的细节顺序员不需要关心。 脱发吃什么好 实际开发中,很可能一个数据库的表就对应一个模型。
通过select就可以实现查询,通过updat就能实现更新。同时模型应该是和具体的数据库类型无关的无论你使用的mysql,比如说一个用户信息表userinfo对应就有一个模型user通过调用模型useradd方法你就可以向数据库添加一条数据。oracl还是sqlserver
而且性能更好。如果一个程序员连SQL知识都没有,同时我不推荐在WEB开发中使用ROR复杂的多表查询使用SQL语言是多么方便和快捷的事情。不认为他一个合格的顺序员。所以,模型里面,提供了一个queri方法来实现直接的SQL查询。
完整代码请见demo包。下面是PHP开发MVC模型的一个大概结果。不是完整代码。
<?  
1.classmodule{  
var$mysql;//数据库操作类。
oracle,可以是mysql.sql等等  
2.var$tbname;//模型对应的表名称  
var$debug=false;//否是调试模式  
$db=''{3.functionmodul$tbname.}
//构造函数  
function_setDebug$debug=tru{}//开启或者关闭调试模式  
$tbname=''{4.functionadd$row.}
5.//新增加一条记录  
functionqueri$strsql{}//直接查询sql语句  
$tbname=''{6.functioncount$where=''.}
7.//计数统计  
$tbname=''{}//查询  functionselect$where=''.
$tbname=''{8.functiondelet$where=''.}
9.//删除满足条件的一个记录  
$where,functionupdat$set.$tbname=''{}//更新指定记录  
$tbname=''{10.functiondetail$where.}
11.//详细显示一条记录  
}  
12.?>
使用数组和数据库的字段来对应的早期的PHPBEA N里面使用了对象来对应。但后来感觉这种PHP开发MVC模型的方法在PHP中不好,这个模型里面。而且增加了很多无谓的类。使用数组更加方便,效果更好(PHP中的数组的确是个好东西,相对JA VA 来说好太多了
使用了mysql数据库来演示,下面的demo中。其中数据库操作类改自我原来的一个库类。
详细讲解使用demo^_^下面。
原来的包的index.php里面增加

<?  
1.require_oncSITE_PA TH.'/
libs/phpbean.class.php';  
require_oncSITE_PA TH.'/
libs/mysql.class.php';  
2.$phpbean=newphpbean;  
global$phpbean;  
3.$mysql=newmysql"localhost"
"****""****""52site";  .
$mysql;  $phpbean->regist'db'.
4.unset$mysql;  
5.?>
关于注册器的使用的原理,这段PHP开发MVC模型代码主要是把MYSQL注册到注册器里面。可以看我翻译的两篇文章。
代码如下:然后新建一个mysqlController.class.php文件。

<?  
1./**  
*MVC演示demo  
不包括平安处置2.*仅仅实现最基本的MVC功能。
及其他优化措施。  数据过滤。
*@author:feifengxlq  
3.*@since:2007-1-24  
*@copyrighthttp://www.phpobject.net/blog/  
4.*/  
classmysqlController  
5.{  
var$module;  
6.functionmysqlControl{  
require_oncSITE_PA TH.'/libs/module.class.php';  
7.$this->module=newmodul'52site_siteinfo';
//52site_siteinfo为表名称  
$this->module->queri"setname'gb2312'";
//如果是MYSQL5请加上这句  
8.}  
functionindexA ct{  
9.print_r$this->module->select;//这样实现了读取数据  
}  
10.}  
11.?>
加入一个模型。然后在indexA ct里面调用模型的方法来显示数据。这样就实现了最简单的查询列表。上面首先是控制器的构造函数里面。


本文由 婴儿用品专卖店 http://www.huazhuliu.com  整理转载

1

主题

33

回帖

64

牛毛

初生牛犊

积分
64
发表于 2012-10-14 13:26:47 | 显示全部楼层 来自 四川省成都市
这文章太专业了,先收藏起来,慢慢研究。
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 07:27 , Processed in 0.151237 second(s), 37 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表