用php开始你的mvc model层

上传人:第*** 文档编号:32826242 上传时间:2018-02-12 格式:DOC 页数:10 大小:53.50KB
返回 下载 相关 举报
用php开始你的mvc model层_第1页
第1页 / 共10页
用php开始你的mvc model层_第2页
第2页 / 共10页
用php开始你的mvc model层_第3页
第3页 / 共10页
用php开始你的mvc model层_第4页
第4页 / 共10页
用php开始你的mvc model层_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《用php开始你的mvc model层》由会员分享,可在线阅读,更多相关《用php开始你的mvc model层(10页珍藏版)》请在金锄头文库上搜索。

1、用 PHP 开始你的 MVC(三)实现你的 Model 层三、实现你的 Mode 层Model 层,就是 MVC 模式中的数据处理层,用来进行数据和商业逻辑的装封,进行他的设计的时候设计到三个个概念:-Model 类。是实体类。用来保存数据库表格的中一条记录的所有字段的数据。并且可以验证这条记录数据的完整性。-ModelManager 类。 是实体类的管理类。通常每一个实体类(Model)都要有一个对应的管理类(ModelManager)。管理类可以用来管理实体类里面的数据纪录 (例如删除/添加/更改.)。 但是 ModelManager 类不一定要有对应的Model 类。-db 类。 用来管

2、理对数据库的联接。 ModelManager 类所有的对数据的操作。都是通过这个 db 类来实现的。 在整个 MVC 模式中。只有这个 db 类可以直接对数据库进行操作。同时也只有 ModelManager 类可以对 db 类进行调用。看上去好象是比较麻烦。但是实际上并不复杂。这种 Model 层设计方式。和网上购物系统的购物车程序是极其相似的。Model 可以看作是购物车里的单个商品的信息类。Manager 可以看作是订单。 订单是用来管理采购的商品的。下面是一个简单的例子。应该是比较典型的。着重看他的整个设计和流程的实现。仔细研究一下。其实不难。注意:下面例子使用的所有的类和方法都是经过简

3、化的。实际情况比这个要复杂的多。但是。作为一个实例已经是足够用了。文件夹结构:|- Db.php|- Model.php|- Manager.php|- ModelTest1.php|- ModelTest2.php|- ModelTest3.php|- ModelTest4.php|- Model /|- Model / ClassModel.php|- Model / StudentModel.php|- Model / ClassManager.php|- Model / StudentManager.php注意文件夹和文件名的大小写内容:假设有一个数据库,保存在两张表,一张是 clas

4、s(班级)表格,一张是student(学生)的表格,class 表格字段: cls_id-int-not nullcls_name-string-not nullcls_address-string-nullstudent 表格字段:stu_id-int-not nullstu_clsid-int-not nullstu_name-string-nullClassModel.php 里面是 class 表的一个实体类 ClassModelClassManager.php 里面是 ClassModel 的管理类 ClassManagerStudentModel.php 里面是 student 表

5、的一个实体类 StudentModelStudentManager.php 里面是 StudentModel 的管理类 StudentManagerDb.php 里面是一个数据库操作管理类,他和里面用的接口和正常使用情况是一样的, 但是本例只是模拟的实现了这个借口.因此,可以在不用真实数据库的情况下运行.文件 0:(Model.php)Model 层实体的基础类1, name=this is name);var $data;/这个实体类的数据约束信息,用来判断加入的$data 数据的准确性/see: ClassModelvar $match;/与该实体对应的数据库中表的名称var $table

6、;/初始化function Model(&$data)$this-data = /设置该实体的某个数据是值function set($key, $value) $this-data$key = $value;/获取该实体的某个数据function get($key)return $this-data$key;/获取该实体的全部数据function getData()return $this-data;/获取该实体的约束信息function getMatch()return $this-match;/验证实体数据的准确性和完整性function isValid()foreach($this-ma

7、tch as $key=$value)if(!isset($valuenull) & !isset($this-data$key) die($key 的数值不能为空);/.可以在加其他的判断,例如是否超过如许的最大数值,或长度过长.?文件 1:(Manager.php)Model 层进行实体管理的基础类db = new Db();/用来向数据库中插入实体信息function insert(&$model)$model-isvalid();$table = $model-table;$match = $model-getMatch();$data = $model-getData();$str1

8、 = $str2 = array();foreach($match as $key=$value) if(isset($data$key)$str1 = $key;$str2 = ($valuetype=C)? .$data$key.: $data$key;$sql = INSERT INTO $table (.implode(, $str1).) VALUES(.implode(, $str2).);return $this-db-execute($sql);?文件 2:(ClassModel.php)班级信息的实体类true 表示是准许为空,否则不能为空)var $match = arra

9、y(cls_id = array(name=cls_id, type=I),cls_name = array(name=cls_name, type=C),cls_address = array(name=cls_address, type=C, null=true);var $table = class;/初始化function ClassModel(&$data)parent:Model($data);/用来获取这个班级的学生的信息function getStudent()require_once ./Model/StudentManager.php;$manager = new Stud

10、entManager();$classId = $this-get(cls_id); return $manager-getList($classId);?文件 3:(StudentModel.php)学生信息的实体类true 表示是准许为空,否则不能为空)var $match = array(stu_id = array(name=stu_id, type=I),stu_clsid = array(name=stu_clsid, type=I),stu_name = array(name=stu_name, type=C, null=true);var $table = student;/初

11、始化function StudentModel(&$data)parent:Model($data);?文件 4:(ClassManager.php)班级实体的管理类db-query($sql);/查找并返回一个班级的实体类function &findOneModel($id)$sql = SELECT * FORM class WHERE cls_id=$id;$data = $this-db-getOne($sql);if($data=null) die(该班级不存在!);require_once ./Model/ClassModel.php;$model = new ClassModel

12、($data);return $model;?文件 5:(StudentManager.php)学生实体的管理类db-query($sql);?文 件 6:(Db.php)数据库联接管理类,用于共享并管理数据的访问。由于这个类涉及的内容不是本章要讨论的内容,所以这个类模拟了“真实的数据库管理类 的方法”,借口是和正常的类是一样的,但是接口函数里面的内容是不对的,只是模拟的数据。网上有很多这种类的做法,可以自己到晚上找找,(*另外本系列 文章的第二章里也有详细的介绍*)。con=mysql_connect(*);./执行数据查询语句function &query($sql)/$result =

13、mysql_query($sql); ./return $result;if($sql=SELECT * FROM student WHERE stu_clsid=2)return array(0=array(stu_id=1, stu_clsid=2, stu_name=student1),1=array(stu_id=2, stu_clsid=2, stu_name=student2);die(空班级);/获取一条数查询结果function getOne($sql)/$result = mysql_query($sql); ./return $result0;if($sql=SELECT

14、* FORM class WHERE cls_id=1)return null;if($sql=SELECT * FORM class WHERE cls_id=2)return array(cls_id=2, cls_name=classname, cls_address=classaddress);/执行数据库更新/添加/删除语句function execute($sql)/mysql_query($sql);echo 正在进行插入操作.插入操作完成;return true;?测试文件一、(ModelTest1.php)(查询班级标号(cls_id)为 2 的班级的学生的名单)findOneModel($classId);$data = foreach($data as $value)echo 编号:.$valuestu_id. - 姓名: .$valuestu_name.;?返回的结果是:编号:1 - 姓名: student1编号:2 - 姓名: student2测试文件二、(ModelTest2.php)(查询班级标号(cls_id)为 1 的班级的学生的名单)findOneModel($classId);$data = foreach($data as $value)ech

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 工程造价

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号