require_once('lib/View.php');
require_once('lib/Controller.php');
//创建DataAccess对象(请根据你的需要修改参数值)
$dao= new DataAccess ('localhost','root','','test');
//根据$_GET["action"]取值的不同调用不同的控制器子类
$action=$_GET["action"];
switch ($action)
{
case "post":
$controller= new postController($dao,$_POST); break;
case "list":
$controller= new listController($dao); break;
case "delete":
$controller= new deleteController($dao,$_GET["id"]); break;
default:
$controller= new listController($dao); break; //默认为显示留言
}
$view=$controller-getView(); //获取视图对象
$view-display();//输出HTML
?
/body
/html
看过index.php之后你就更清楚了吧,原来功能是通过$_GET[“action”]指定的,由一个switch结构分发 , 不同的功能对应不同的Controller子类 。现在可以滚上去(滚动页面上去的简称,绝非不洁用语^_^)仔细看看这个Controller代码了 。注释应该很细了,不懂的地方就去看看PHP5的OOP语法和概念吧,单纯看这些概念总是越看催眠效果越好,现在带着实际问题去看,应该有所不同吧 。不过我还是建议你在完成这个MVC的Hello World知道MVC是怎么回事之后下功夫打好OOP的基础,毕竟那是根本啊 。
怎么样,Controller真是个光说不练的家伙吧,看不到三行它就把你引向View了,那就看看View吧 。
View里有对应的子类,负责相应功能的显示 。理解了Controller,View的代码就不难看了,难看的话也是因为混杂着HTML的原因,它所做的就是从Model获取所需的数据,然后塞到HTML中 。
复制PHP内容到剪贴板
PHP代码:
?php
//! View 类
/**
* 针对各个功能(list、post、delete)的各种View子类
* 被Controller调用,完成不同功能的网页显示
*/
class View {
var $model;//Model对象
var $output; //用于保存输出HTML代码的字符串
//! 构造函数
/**
* 将参数中的Model对象接收并存储在成员变量$this-model中
* 供子类通过model对象获取数据
*/
function __construct ($model) {
$this-model=$model;
}
function display() {//输出最终格式化的HTML数据
echo($this-output);
}
}
class listView extends View//显示所有留言的子类
{
function __construct($model)
{
parent::__construct($model);//继承父类的构造函数(详见Controller)
$this-model-listNote();
while ($note=$this-model-getNote())//逐行获取数据
{
$this-output.="姓名:$note[name]br 留言:br $note[content]
a href=https://www.04ip.com/"".$_SERVER['PHP_SELF']."?action=deleteid=$note[id]\"删除/abr hr /";
}
}
}
class postView extends View//发表留言的子类
{
function __construct($model, $post)
{
parent::__construct($model);
$this-model-postNote($post[name],$post[content]);
$this-output="Note Post OK!bra href=https://www.04ip.com/"".$_SERVER['PHP_SELF']."?action=list\"查看/a";
}
}
class deleteView extends View//删除留言的子类
{
function __construct($model, $id)
{
parent::__construct($model);
$this-model-deleteNote($id);
$this-output="Note Delete OK!bra href=https://www.04ip.com/"".$_SERVER['PHP_SELF']."?action=list\"查看/a";
}
}
?
之所以UI方面写得如此简陋 , 是因为这些工作可以交给Smarty这样的模板去做,而我们这里就像集中精力研究MVC,不想把Smarty扯进来,所以就这样凑合了 , 以后我们可以再把Smarty结合进来 。
看了这个东西之后不知你是否对MVC的概念和实现更明白了一点 。
推荐阅读
- 怎么查显卡是否二手的问题,如何看显卡是否二手
- 公园为什么不能直播了,潍坊滨海轻轨
- 拉链坏了有什么好处视频,拉链坏了该怎么办
- 直播用语音点歌叫什么手机,直播用语音点歌叫什么手机好
- vb.net圆 vbnet圆角按钮
- postgresql整数转浮点,pgsql 转整数
- 无人直播土特产,无人直播的优点
- mysql怎么删除行 删除mysql数据表一行数据
- mysql则么查询一对多数据库,mysql查询多个id