用PHP开始你的MVC (二)抽象数据库接口
二、抽象数据库接口(利用数据操作管理类)
在用mvc模式开发的时候,model层负责数据库的所有操作,为了对数据库的操作进行统一的管理,我们需要定义一个数据库操作管理类,由他来接替所有的数据库操作,也就是整个系统中只有这个数据库操作管理类,可以直接对数据库进行操作,如果其他的类需要对数据库进行操作,那它就必须调用和通过这个类来实现。
下面的Db类就是一个这样的类。
<?php |
....../test/*******/Bad ....../test/*******/Good (其中的"******"可以用任何字符串替换,"......."是你的web路径) |
文件的目录结构如下
|-- .htaccess |-- test |-- Application.php |-- Controler/GoodControler.php |-- Controler/BadControler.php 注意 文件".htaccess",在windows下不能直接建立的,可以在命令行模式下建立. |
文件0:(.htaccess)(这个文件是更改apache的配置方式用的)
<files test> forcetype application/x-httpd-php </files> |
文件1:(test.php)
<?php /*------------------------------------- * test.php * * 作为你的网站的入口的文件 * 用来初始化和入口 * 调用执行Controler的调用 * -------------------------------------*/ require "Application.php"; $aa = new Application(); $aa->parse(); $aa->go(); ?> |
文件2:(GoodControler.php)
<? |
|- 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 注意文件夹和文件名的大小写 |
内容:假设有一个数据库,保存在两张表,一张是class(班级)表格,一张是student(学生)的表格,
class表格字段: cls_id----------int--------not null cls_name--------string-----not null cls_address-----string-----null student表格字段:stu_id----------int--------not null stu_clsid-------int--------not null stu_name--------string-----null |
ClassModel.php 里面是class表的一个实体类ClassModel ClassManager.php 里面是ClassModel的管理类ClassManager StudentModel.php 里面是student表的一个实体类StudentModel StudentManager.php&n |
MVC模式的view层的主要任务是进行页面的和结果的显示工作,在php的实现过程中,主要是体现为一个模板(使用模板,可以达到php代码和html代码分离的目的,这样代码和页面的维护就方便多了,便于管理和页面的更换,可以真正的划分程序员、美工的分工)的解析过程:
首先,controler层从model层得到数据
其次,controler层将数据交给view层
再次,view层的接口将数据按一定的方式传给模板解析类,
最后,模板解析类将数据解析到模板中,然后显示。
下面是一个具体的实现例子
目录结构
|- ClassRenderTest.php //测试解析classlist.html |- StudentRenderTest.php //测试解析studentlist.html |- render / TemplateParser.php //模板解析类 |- render / Render.php //解析模板的所有类的基础类 |- render / StudentRender.php //解析模板studentlist.html的类 |- render / ClassRender.php //解析模板classlist.html的类 |- template / studentlist.html //模板文件 |- template / classlist.html //模板文件 |
注意:
1、这里模板解析类选用了简单的“TemplateParser.php”,根据个人的需要你可以选用任何一种模板解析类;
2、如果每个模板解析都直接调用“TemplateParser.php”,可能会有大量的重复代码出现,这是oo思想所不准许出现的。因此采用“Render.php”对它进行包装,然后再对“Render.php”里面的Render类进行扩展,来对不同文件模板进行解析;
3、不同的模板解析类的,使用的方法是不同的,他们的包装方式也可能不同。
4、“StudentRender.php”“ClassRender.php”就是包装过的Render类,分别用来满足解析“studentlist.html”“classlist.html”的需要。
文件1:classlist.html
current time is : _now_ <BR><BR> current school class list : <TABLE border=1> <TR> <TH>ID</TH> <TH>NAME</TH> <TH>GRADE</TH> <TH>CLASS</TH> </TR> BEGIN_classlist_ <TR> <TD>_cid_</TD> <TD>_cname_</TD> <TD>_grade_</TD> &nb |
短短数年前,对 PHP 最常见批评之一是不支持 MVC 样式的架构。随着时代的变迁,现在在 PHP 框架领域里可以获得多种选择。本系列将介绍三个广泛使用的 PHP 框架 —— Zend、symfony 和 CakePHP —— 通过在三个框架中构建和扩展样例应用程序来检验这三个框架的类似之处和不同之处。
“PHP 框架” 系列专门针对那些想要开始使用框架、但又没有机会详细检验可用框架的 PHP 开发人员。在学完本系列后,您将了解选择这三个框架的原因、如何安装每个框架,并且充分运用将在三个框架中扩展的测试应用程序。听起来要学习的内容很多,但是不必担心。内容虽然多,但是我们已经把内容细分为多个便于管理的部分。
关于本系列
本系列的第 1 部分将列出本系列涵盖的内容,介绍将进行考察的框架以及说明如何安装,并查看将构建的第一个测试应用程序。
第 2 部分将指导您在三个框架中构建样例应用程序,着重说明了它们的类似之处和不同之处。
第 3 部分从扩展测试应用程序开始,然后处理不符合一般规律的例外情况。所有框架都能很好地完成份内的任务。每个项目中都需要完成一些框架设定工作之外的事情。第 2 部分就将介绍那些情况。
第 4 部分主要介绍了 Ajax 支持。使用本机代码和第三方库检验了 Ajax 的使用 —— 特别介绍了每个框架如何运行及接受具体的常用库。
第 5 部分将处理如何在框架外部工作。设定一项任务(每晚更新脚本),并在每个框架中检验完成此项任务的过程。