HDWiki/MVC中的控制器
概述[ ]
MVC中的控制器control主要负责业务逻辑部分,所有的功能逻辑全部在此实现,控制器对整个功能负责,它调用模型(model)的方法实现它需要的功能,调用视图(view)的方法来显示数据.
控制器(control)文件存放于 control/文件夹中,命名基本以功能为主,例如doc.php表示就是词条相关的控制器,user.php就是用户相关的控制
结构[ ]
示例代码如下:
!defined('IN_HDwiki') && exit('Access Denied'); class control extends base{ function control(& $get,& $post){ $this->base( & $get,& $post); $this->load('user'); } function dodefault{ $user=$_ENV['user']->get_user($uid); $this->view->assign('user',$user); $this->view->display('space'); } ?>
相关解释[ ]
1、!defined('IN_HDwiki') && exit('Access Denied'); 每个control文件都是以此开头表示必须是HDwiki内部调用
2、class control extends base 每个控制器类的名称均是control 且均是base类的子类
3、每个控制器类必须有构造函数,function control 做初始化数据 ,其中:
- $this->base( & $get,& $post); 调用父类的构造函数初始化用户,模板,风格,语言,等等数据,每个control类都需要这样调用
- $this->load('user');调用父类的load方法载入 user模型(model),其文件为/model/user.class.php,载入相关的模型(model)可以根据需要选择调用
4、function dodefault 方法就是我们要处理具体的业务逻辑的函数了,通常会有一个dodefault方法,这是个默认方法,当没有指定相关的业务逻辑的方法名称的时候会调用这个方法,若指点了方法则调用指定的方法,例如从url的形式 index.php?user-space.html来看调用user的control文件control/user.php 并且执行space的业务逻辑,将调用 dospace方法 (所有业务逻辑名称加do便是业务逻辑要执行的方法)
5、$user=$_ENV['user']->get_user($uid); 代表执行上面载入的user模型的get_user方法,
6、$this->view->assign('user',$user);调用视图类将$user变量发送到页面上去, $this->view->display('space');调用视图类调用/view/default/space.htm 页面并在浏览器中将页面解析显示出来
开发[ ]
若要在某个control怎家新的业务逻辑,以上面结构为例,只需要在control增加新的方法即可,以增加个总用户个数为例,调用index.php?user-members即可看到用户总数的页面
我们需要在function dodefault(){}这个方法后面添加一个 function domembers(){}的方法
这个方法中执行得到用户总数的业务逻辑,需要调用 user模型(model user.class.php)的get_count方法得到总数,并将总数发送的页面中,并调用members.htm这个文件显示出来,那么这个方法可以这样写
function domembers(){ $members=$_ENV['user']->get_count();//此方法若model方法中没有,需要在model(user.class.php)中添加,详细请参考MVC中的模型(Model) 此方法可得到总人数; $this->view->assign('count',$members);//调用视图将总人数复制给页面上的count变量,页面上可以用count表示总人数 $this->view->display('members')//调用视图显示/view/default/members.htm视图文件 详细请参看MVC中的视图(View) }
这样添加一个新的业务逻辑就完成了
参考来源[ ]
HDWIKI使用手册导航 | ||||||
---|---|---|---|---|---|---|
|