[TP3.2]实现绑定动作到一个类的功能
浏览:2243
最后更新:2014-06-29 10:26
分类:类库
扩展名:还没想好,暂时就叫做《TP3.2绑定动作到类》
适用场景:某些情况下,需要将一个控制器下不同的动作分发给不同的人开发时,为避免同时编辑一个文件造成冲突,将动作独立成一个类,分别开发。
依赖:TP3.2 , PHP5.3+
安装过程:将附件中的类文件放到 Common\Lib\下,也就是Common模块下新建一个Lib目录,然后把类文件扔进去。
使用教程:
假设在Home模块下IndexController;
1.创建目录 Home\Actions\IndexController\
2.在控制器类中添加:
function _empty($method){
if($action = \Common\Lib\Action::createAction($this,'\\Home\\Actions\\IndexController\\'.ACTION_NAME)){//注意,这里的路径对应第1步中创建的目录
$action->run();
}else{
echo "你请求的方法不存在";//如果你之前有定义过_empty方法,把原代码放到这里就可以。
}
}
3.创建动作类动作类的名字是根据你的控制器中ACTION_NAME来的,当我访问/index.php/Home/Index/test的时候,ACTION_NAME就是'test',这里的动作类名字也就是test,搞清楚这一点后,我们在第1步创建的目录下新建一个 test.class.php,而类的具体代码格式如下:
<?php
namespace Home\Actions\IndexController;//命名空间参考第1步
class test extends \Common\Lib\Action{
//必须实现run方法,在访问时会自动执行
function run(){
$controller = $this->getController();//通过getController()方法获取所属控制器的对象,可以访问控制器中的对象以及方法
$controller->assign('title','这是'.CONTROLLER_NAME.'下的'.ACTION_NAME.'动作');//模板赋值,就跟控制器下的用法一样,只不过$this变成了$controller
$controller->display();//渲染视图
}
}
效果图:

