基于php mvc实例教程,php mvc中controller类实例教程

本文章来讲述一下关于mvc中controller类教程,通过上两节我们知道 程序通过单一入口文件的route类决定了 唯一的moudle, conttoller, action,并在最后执行了

实例代码如下:

$route->run();

/**

* 执行相应的 MCA

*

*/

privatefunctionrun ()

{

$filePath= APPLICATION_PATH.'/controller/'.$this->_moudle.'/'.$this->_conttoller.'.inc.php';

$isNo= 0;

if(file_exists($filePath))

{

include"$filePath";

$controller_tp=$this->_conttoller.'Controller';

$controller=new$controller_tp;

if(method_exists($controller,$this->_action.'Action'))

{

$acion_tmp=$this->_action.'Action';

$controller->$acion_tmp();

}else

{

$isNo= 1;

}

}else

{

$isNo= 1;

}

if($isNo)

{

$filePath= APPLICATION_PATH.'/controller/default/index.inc.php';

$this->_moudle =$this->_default['module'];

$this->_conttoller =$this->_default['conttoller'];

$this->_action =$this->_default['action'];

($this->_moudle !=$this->_default['module']) &&include"$filePath";

$controller=newindexController;

$controller->indexAction();

}

}

当相关'Controller'文件存在时执行

实例代码如下:

include"$filePath";

$controller_tp=$this->_conttoller.'Controller';

$controller=new$controller_tp;

上述三行代码的意思是,根据确定好的 conttoller 包含相应文件,并实例化相应的conttoller.

实例代码如下:

$acion_tmp=$this->_action.'Action';

$controller->$acion_tmp();

根据相应的Action 执行相应的action

所有的 Controller 类都集成一个公用的Controller 类,本节课我们就来分析一下公共的Controller 类

/**

* 前台公共类 接口

* 实现公共部分代码

*/

/**

* 本文件只能被index.php包含

*/

defined("WEB_AUTH") ||die("NO_AUTH");

/**

* 包含菜单配置文件

*/

?>

实例代码如下:

classController

{

public$tpl;

public$controller;

public$body;//右边菜单

public$_route;

public$html_;

public$tpl_;

/*

* 构造函数

*/

publicfunction__construct()

{

$this->init();

}

/*

* 初始化变量,顶部菜单和模板

*/

protectedfunctioninit()

{

global$TPL,$route;

$this->tpl  =$TPL;

$this->_route =$route;

}

/**

* 模板变量传第

*/

protectedfunctiondiplayTpl()

{

$this->body   ||$this->body =$this->_route->getActionName();

$this->tpl->assign("body",$this->body);

/*设置本控制器的模板目录*/

$this->controller ||$this->controller  =$this->_route->getControllerName();

$this->tpl->assign("controller",$this->controller);

$this->tpl->display($this->layout);

}

/**

* smarty封装类

* @param string $name

* @param string $value

*/

publicfunctionassign($name,$value)

{

$this->tpl->assign($name,$value);

}

/**

* 显示另外的模板

* @param string $name

* @param string $value

*/

protectedfunctiondisplayOther($file)

{

$this->assign("otherTpl",TRUE);

$this->tpl->display($file);

}

/**

* 显示某个MCA的body模板

* 0=>m 1=>c =>a

*/

protectedfunctiongetMcaBody($array)

{

return'http://www.cnblogs.com/../'.$array[0].'/body/'.$array[1].'/'.$array[2];

}

/*

* 析构函数,显示页面

*/

protectedfunction__destruct()

{

$this->tpl->_tpl_vars['otherTpl'] ||$this->diplayTpl();

}

/**

* 中途退出

*/

protectedfunction_exit($msg="")

{

$this->assign("otherTpl",TRUE);

die($msg);

}

/**

* 用 $this->html_var=value放法给变量赋值

* 用 $this->tpl_var=value放法给变量赋值

*/

protectedfunction__set($name,$value)

{

if(strtolower(substr($name,0,5)) =="html_"||strtolower(substr($name,0,4)) =="tpl_")

{

$this->assign(substr($name,5),$value);

}

}

}

?>

实例代码如下:

protectedfunction__destruct()

{

$this->tpl->_tpl_vars['otherTpl'] ||$this->diplayTpl();

}

这是所有Controller 类 生命周期结束时候要执行的函数(搜索一下php魔术方法 查看详情)

本框架利用这时候解析模板,这样的好处是,当Controller中相关执行完相关数据处理,后自动执行相关的模板(View);而不用每次在程序最后调用模板

实例代码如下:

protectedfunction__set($name,$value)

{

if(strtolower(substr($name,0,5)) =="html_"||strtolower(substr($name,0,4)) =="tpl_")

{

$this->assign(substr($name,5),$value);

}

}

这个函数简化了程序向模板传递变量的方法,以smarty为例,在程序中需要执行 $tpl->assign(‘key’,$value);

来向模板中注册变量,而此函数中简化了此方法 ,只需 $this->html_key=$value;来实现相同的作用.(利用开发环境的提示功能,在前面声明

实例代码如下:

public$html_;

public$tpl_;

(责任编辑:admin)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值