热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

phpmvc中controller类实例教程_PHP教程-php教程

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

$route->run();

/**

* 执行相应的 MCA

*

*/

private function run ()

{

$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= new indexController;

$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");

/**

* 包含菜单配置文件

*/

代码如下

class Controller

{

public $tpl;

public $controller;

public $body;//右边菜单

public $_route ;

public $html_;

public $tpl_;

/*

* 构造函数

*/

public function __construct()

{

$this->init();

}

/*

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

*/

protected function init()

{

global $TPL,$route;

$this->tpl = $TPL;

$this->_route = $route;

}

/**

* 模板变量传第

*/

protected function diplayTpl()

{

$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

*/

public function assign($name,$value)

{

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

}

/**

* 显示另外的模板

* @param string $name

* @param string $value

*/

protected function displayOther($file)

{

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

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

}

/**

* 显示某个MCA的body模板

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

*/

protected function getMcaBody($array)

{

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

}

/*

* 析构函数,显示页面

*/

protected function __destruct()

{

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

}

/**

* 中途退出

*/

protected function _exit($msg = "")

{

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

die($msg);

}

/**

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

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

*/

protected function __set($name,$value)

{

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

{

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

}

}

}

?>

首先看

代码如下

protected function __destruct()

{

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

}

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

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

代码如下

protected function __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_;

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/629229.htmlTechArticle本文章来讲述一下关于mvc中controller类教程,通过上两节我们知道 程序通过单一入口文件的route类决定了 唯一的moudle, conttoller, action,并在最...


推荐阅读
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • 深入解析Unity3D游戏开发中的音频播放技术
    在游戏开发中,音频播放是提升玩家沉浸感的关键因素之一。本文将探讨如何在Unity3D中高效地管理和播放不同类型的游戏音频,包括背景音乐和效果音效,并介绍实现这些功能的具体步骤。 ... [详细]
  • 本文提供了处理WordPress网站中出现过多重定向问题的方法,包括检查DNS配置、安装SSL证书以及解决数据库连接错误等步骤。 ... [详细]
  • 本文探讨了一种常见的C++面试题目——实现自己的String类。通过此过程,不仅能够检验开发者对C++基础知识的掌握程度,还能加深对其高级特性的理解。文章详细介绍了如何实现基本的功能,如构造函数、析构函数、拷贝构造函数及赋值运算符重载等。 ... [详细]
  • 随着Linux操作系统的广泛使用,确保用户账户及系统安全变得尤为重要。用户密码的复杂性直接关系到系统的整体安全性。本文将详细介绍如何在CentOS服务器上自定义密码规则,以增强系统的安全性。 ... [详细]
  • 本文详细介绍如何安装和配置DedeCMS的移动端站点,包括新版本安装、老版本升级、模板适配以及必要的代码修改,以确保移动站点的正常运行。 ... [详细]
  • JavaScript 跨域解决方案详解
    本文详细介绍了JavaScript在不同域之间进行数据传输或通信的技术,包括使用JSONP、修改document.domain、利用window.name以及HTML5的postMessage方法等跨域解决方案。 ... [详细]
  • 本文介绍了如何在AngularJS应用中使用ng-repeat指令创建可单独点击选中的列表项,并详细描述了实现这一功能的具体步骤和代码示例。 ... [详细]
  • 在项目冲刺的最后一天,团队专注于软件用户界面的细节优化,包括调整控件布局和字体设置,以确保界面的简洁性和用户友好性。 ... [详细]
  • 本文探讨了如何在 Spring MVC 框架下,通过自定义注解和拦截器机制来实现细粒度的权限管理功能。 ... [详细]
  • JavaScript 页面卸载事件详解 (onunload)
    当用户从页面离开时(如关闭页面或刷新页面),会触发 onunload 事件,此时可以执行预设的脚本。需要注意的是,不同的浏览器对 onunload 事件的支持程度可能有所不同。 ... [详细]
  • 探索Java 11中的ZGC垃圾收集器
    Java 11引入了一种新的垃圾收集器——ZGC,由Oracle公司研发,旨在支持TB级别的内存容量,并保证极低的暂停时间。本文将探讨ZGC的开发背景、技术特点及其潜在的应用前景。 ... [详细]
  • 本文探讨了使用普通生成函数和指数生成函数解决组合与排列问题的方法,特别是在处理特定路径计数问题时的应用。文章通过详细分析和代码实现,展示了如何高效地计算在给定条件下不相邻相同元素的排列数量。 ... [详细]
  • 在Notepad++中配置Markdown语法高亮及实时预览功能
    本文详细介绍了如何在Notepad++中配置Markdown语法高亮和实时预览功能,包括必要的插件安装和设置步骤。 ... [详细]
  • 本文总结了软件工程课程M1和M2阶段的个人收获,包括项目开发中的技术学习、团队协作及管理经验。同时,对《构建之法》一书中的相关问题进行了理解和分析。 ... [详细]
author-avatar
手机用户2502874905
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有