[FleaPHP]到底是谁干活? —— 一个比较慨念性的东西
原作:浪子快刀
在仔细的研究FleaPHP开发
指南中的---一个多用户商铺
应用程序的开发--有了一点想法,在这里提出.
在FleaPHP的设计中,所谓的V被降到了一个很不重要的程度,从FleaPHP系统中根本不要求建立view目录就可以看出来.的确,显示这一层硬要加到
系统中没有什么意义.
但,在--一个多用户商铺应用程序的开发---中Controller的工作相当多,大家注意一下BoClasses.php文件.里面显示,添加,修改,删除,什么都是在这个
文件里完成的.
而model,仅仅只是干了一点事情整个Classes.php内容如下
复制内容到剪贴板
代码:
<?php
load_class('FLEA_Db_TableDataGateway');
/**
* 操作商品分类的模型对象
*/
class Model_Classes extends FLEA_Db_TableDataGateway
{
var $tableName = 'classes';
var $primaryKey = 'class_id';
}
?>除了设定2个
变量之外,什么活都没干.
***********************
我们来看一段我从网上找到的文字:
MVC 是一个可以让你把“三个部分(即MVC的全称,Model、View、Controller)”谐调地组成一个复杂应用程序的概念。一辆汽车就是一个在现实生活中非常好的MVC例子。我们看车都看两个View(显示)部分:内部和外部。而这两个都离不开一个Controller(控制者):司机。刹车系统、方向盘和其他操控系统代表了Model(模型):他们从司机(Controller)那里取得控制方法然后应用到内部和外观(View)。
*************************
相信大家对于上面一段文字应该很熟悉了.在我的理解中,Contorller就是一个分配活的,Model才是干苦力的.司机踩一下油门,发动机什么的就拚命工作嘛.
但,看了示例代码,好象不是这个样子.觉得有点疑问,就在这里提出.
当然,这不会影响我对FleaPHP的学习,但如果这个不弄明白,的确会影响到我对FleaPHP的理解.
dualface
你对 MVC 的理解没问题,只是对 FleaPHP 的细节没看透彻
如果你仔细看看那个商铺的代码就会发现 FleaPHP 的 TableDataGateway 正是将 Model 的常用操作都封装好了,所以你自己的 Model 类(Model_Classes)可以很简单。
其实在这个系列
教程的后面部分,我就会为 Model 添加其他的方法,例如处理图片的上传、删除,计算商品的总数等等。
浪子快刀
嗯,的确.仔细想看看,是这样没错的了.
如果是这样的话,老大,你大可以列出一份应该让我们仔细看的文件的清单呀.
个人认为如下,不是每个人都是很厉害的高手.也不是每个人都有胃口通读FleaPHP的全部源码(以前对于别的东西,我是有这胃口,但FleaPHP啃了几天,实在咬不动,暂时放弃).但,在目前状态有兴趣(是指所有教程还没有完备的情况下)学习FleaPHP的人,大致上还是会有一点基础的.
所以,个人觉得老大应该告诉我们,FleaPHP里哪几个文件应该好好看过.至少能够熟悉里面的函数的用法吧.这样以后写代码的出发点,针对性是要比照着教程抄要好许多了.个人建议哈.至少---TableDataGateway是值得仔细研究一下的,几乎所有
数据库操作都在里面了(奇怪的是我没在里面找到分页的函数).
那,是否还有别的值得大家研究的文件呢?
dualface
我倒觉得
API 文档是一份需要仔细阅读的文档,里面对所有函数和方法都有说明。
dos2000
如果在API文档里增加简要的调用例子就好了,大部分文档可读性很好,但仍然有一部分即便看了文档用起来也不得要领,最后虽然活儿做出来了,可能并不是设计者的思路。比如FLEA_Db_TableDataGateway 中的save 和saveRowset 就不知道什么情况下使用才好
dualface
save() 很简单,判断提交的数据里面有没有主键
字段值。如果有,则调用 update(),否则调用 create()。save() 本身是不做任何实际工作的。
saveRowset() 是一次保存一个二维数组,例如:
复制内容到剪贴板
代码:
$rowset = array(
array('title' => 'post title'),
array('title' => 'post title 2'),
);
$tdg->saveRowset($rowset);和自己写一个 foreach 循环,再分别调用 create() 或 update() 的效果完全一样。