热门标签 | 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,并在最...


推荐阅读
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • MVC设计模式的介绍和演化过程
    本文介绍了MVC设计模式的基本概念和原理,以及在实际项目中的演化过程。通过分离视图、模型和控制器,实现了代码的解耦和重用,提高了项目的可维护性和可扩展性。详细讲解了分离视图、分离模型和分离控制器的具体步骤和规则,以及它们在项目中的应用。同时,还介绍了基础模型的封装和控制器的命名规则。该文章适合对MVC设计模式感兴趣的读者阅读和学习。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • GetWindowLong函数
    今天在看一个代码里头写了GetWindowLong(hwnd,0),我当时就有点费解,靠,上网搜索函数原型说明,死活找不到第 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 本文介绍了Sencha Touch的学习使用心得,主要包括搭建项目框架的过程。作者强调了使用MVC模式的重要性,并提供了一个干净的引用示例。文章还介绍了Index.html页面的作用,以及如何通过链接样式表来改变全局风格。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 数据库锁的分类和应用
    本文介绍了数据库锁的分类和应用,包括并发控制中的读-读、写-写、读-写/写-读操作的问题,以及不同的锁类型和粒度分类。同时还介绍了死锁的产生和避免方法,并详细解释了MVCC的原理以及如何解决幻读的问题。最后,给出了一些使用数据库锁的实际场景和建议。 ... [详细]
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社区 版权所有